Batch Unzuverlässige "If not exist Datei"-Abfrage

Madnex

Vice Admiral
Registriert
März 2004
Beiträge
6.909
Hallo,

ich habe momentan das Problemchen, dass bei einer bestimmten Datei bei der entsprechenden "If not exist"-Abfrage nicht erkannt wird, ob sie vorhanden ist oder nicht. Ich würde gerne ergründen warum das so ist, denn verstehen tue ich das nicht.

Es dreht sich um folgenden Code-Schnipsel:

Code:
@echo off & setlocal

IF NOT EXIST 7Z.DLL SET DLL7Z=1
IF NOT EXIST 7Z.EXE SET 7Z=1
IF NOT EXIST SYSLINUX.EXE SET SL=1
IF NOT EXIST vesamenu.c32 SET VM=1

IF [%DLL7Z%]==[1] SET FC=1
IF [%7Z%]==[1] SET FC=1
IF [%SL%]==[1] SET FC=1
IF [%VM%]==[1] SET FC=1

IF [%FC%]==[1] GOTO MISSED
GOTO EOF


:MISSED
Echo.
Echo Fehler:
Echo Es konnten nicht alle für die Funktion des Skripts wichtigen Dateien gefunden
Echo werden. Folgende Dateien fehlen:
Echo.
IF [%DLL7Z%]==[1] Echo     »  7z.dll
IF [%7Z%]==[1] Echo     »  7z.exe
IF [%SL%]==[1] Echo     »  Syslinux.exe
IF [%VM%]==[1] Echo     »  vesamenu.c32
Echo.

:EOF
Endlocal

Die Datei, um die es geht, ist die 7z.exe. Egal, ob ich sie lösche oder umbenenne, das Fehlen wird nicht registriert. Bei allen anderen funktioniert es hingegen.

Kann mir jemand erklären warum das so ist?
 

Anhänge

  • fc.7z
    fc.7z
    491,6 KB · Aufrufe: 153
Zuletzt bearbeitet:
Das Problem könnte daher kommen, dass die Variable "7Z" mit einer Zahl beginnt und der Intepreter dies versucht als übergebenes Argument zu verarbeiten.

Sowas ist afaik bei Batch-Dateien unzulässig.
 
@Simon
Tatsächlich. :) Das war des Rätsels Lösung. Ich danke dir vielmals.
 

Ähnliche Themen

Zurück
Oben