誰かが声明などがあれば、Windowsのバッチスクリプトでは、二重引用符を使用することを示唆しているようだ:ユーザーの二重引用符if文
IF "%FLAG%"=="1" (do something)
しかし、私の場合、私は二重引用符を使用してスクリプトを引き起こすことを発見比較に失敗します。誰でもここで何が間違っているのを見ることができますか?
PS:私はSETLOCAL ENABLEDELAYEDEXPANSION
をスクリプトに入れました。
EDIT:ECHO%のフラグ%が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
どのように動作しないのですか(それは私のために機能します)? –