2011-01-10 3 views
0

누군가가 문처럼이 경우 윈도우 배치 스크립트에 따옴표를 사용하는 제안 것 같다사용자 따옴표 if 문

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

하지만, 내 경우에는 내가 큰 따옴표를 사용하여 스크립트를 일으킬 수 있다는 것을 발견 비교에서 실패합니다. 아무도 여기서 무엇이 잘못 될 수 있는지를 볼 수 있습니까?

추신 : 나는 스크립트에서 SETLOCAL ENABLEDELAYEDEXPANSION입니다.

편집 : 에코 %의 FLAG %의 1.

EDIT2 때이 문에도 실패 : 이 내 스크립트입니다.

@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

어떤 방법으로 문제가 있습니까? 그리고 어떤 행 (일반적으로 "% FLAG %'"를 참조하지만 그 변수는 스크립트에 나타나지 않습니다). –

+0

@Dennis : % isAll % == 1은 작동하지만 "% isAll %"== "1"은 작동하지 않습니다. 혼란스럽게해서 죄송합니다. – Stan

+0

어떤 방식으로 작동하지 않습니까? –

답변

0

지연 확장은 관련이 없습니다.

비교가 실패한 경우 %FLAG%의 값은 무엇입니까? 즉 ECHO %FLAG%의 결과는 무엇입니까?

+0

이 문장은 ECHO % FLAG %가 1 일 때조차도 실패합니다. – Stan

+0

@Stan : 그 밖의 뭔가 잘못되었습니다. 스크립트 (또는 관련 스 니펫)는 항상 작동해야하기 때문에 게시하십시오. – Jon

+0

이 (가) 내 게시물을 업데이트했습니다. 좀 봐 주시겠습니까? – Stan