似乎有人建議使用雙引號在Windows批處理腳本if語句,如:用戶雙引號if語句
IF "%FLAG%"=="1" (do something)
然而,在我的情況下,我發現,使用雙引號可能導致腳本比較失敗。任何人都可以看到這裏可能是錯的嗎?
PS:我在腳本中有SETLOCAL ENABLEDELAYEDEXPANSION
。
編輯: 當ECHO%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
它失敗的方式是什麼?哪一行(通常指「%FLAG%'」,但該變量沒有出現在腳本中)。 –
@ Dennis:%isAll%== 1將起作用,而「%isAll%」==「1」不會。抱歉讓人困惑。 – Stan
它不起作用(它適用於我)? –