2011-01-10 2 views
0

Es scheint jemand doppelte Anführungszeichen zu verwenden, in Windows-Batch-Skript schlägt if-Anweisung wie:Benutzer doppelte Anführungszeichen in Batch-Skript if-Anweisung

IF "%FLAG%"=="1" (do something) 

Allerdings habe ich in meinem Fall festgestellt, dass mit doppelten Anführungszeichen verwendet, kann das Skript verursachen scheitert beim Vergleich. Kann jemand sehen, was hier falsch sein könnte?

PS: Ich habe SETLOCAL ENABLEDELAYEDEXPANSION im Skript.

EDIT: Diese Aussage sogar schlägt fehl, wenn ECHO% FLAG% ist 1.

EDIT2: Das ist mein Skript.

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 

set CFG=C:\config 
set LOBBYLIST=%CFG%\serverlist_lobby_server.txt 
set DBDAEMONLIST=%CFG%\serverlist_daemon_server.txt 
set LIST= 
set FOLDER= 

set /p OP= Delete 1.Lobby, 2.dbdaemon, All? (1,2,a) 

:BEGIN 
if %OP%==1 (GOTO DELETE_LOBBY_DUMP) 
if %OP%==2 (GOTO DELETE_DBDAEMON_DUMP) 
GOTO END 


:DELETE_LOBBY_DUMP 
set LIST=%LOBBYLIST% 
set FOLDER=LobbyServer 
GOTO START_DELETE 
:DELETE_DBDAEMON_DUMP 
set LIST=%DBDAEMONLIST% 
set FOLDER=DBDaemonServer\Lobby 
GOTO START_DELETE 
:DELETE_ALL 
set /a OP = OP + 1 
GOTO BEGIN 




:START_DELETE 
for %%b in (%LIST%) do ( 
    echo %%b 
    for /f %%a in (%%b) do ( 
     echo %%a 
     dir \\%%a\c$\Services\%FOLDER%\*.dmp | find "dmp" 
     dir \\%%a\c$\WINDOWS\PCHEALTH\ERRORREP\UserDumps\*.hdmp | find "hdmp" 
    )) 

echo. 
echo. 

if %isAll%==1 (set isContinue=y 
) ELSE (set /p isContinue= Continue? (y/n) 
) 

if %isContinue%==y (
    for %%b in (%LIST%) do ( 
     echo %%b 
     for /f %%a in (%%b) do ( 
      echo %%a 
      del \\%%a\c$\Services\%FOLDER%\*.dmp 
      del \\%%a\c$\WINDOWS\PCHEALTH\ERRORREP\UserDumps\*.hdmp 
     ) 
    ) 
) 

if %isAll%==1 (GOTO DELETE_ALL) 

GOTO END 
:END 

pause 
+0

Inwiefern scheitert es? Und welche Zeile (Sie verweisen generisch auf "% FLAG%' ", aber diese Variable erscheint nicht in Ihrem Skript). –

+0

@Dennis:% isAll% == 1 funktioniert, während "% isAll%" == "1" nicht funktioniert. Entschuldigung für das verwirrende. – Stan

+0

Inwiefern funktioniert es nicht (es funktioniert für mich)? –

Antwort

0

Verzögerte Erweiterung hat nichts damit zu tun.

Was ist der Wert von %FLAG%, wenn der Vergleich fehlschlägt, d. H. Was gibt ECHO %FLAG% aus?

+0

Diese Aussage schlägt sogar fehl, wenn ECHO% FLAG% 1 ist. – Stan

+0

@Stan: dann stimmt etwas anderes nicht. Veröffentlichen Sie Ihr Skript (oder ein relevantes Snippet), da dies immer funktionieren sollte. – Jon

+0

hat meinen Beitrag aktualisiert. Würden Sie bitte einen Blick darauf werfen? – Stan

Verwandte Themen