将此文件放入名为“mybat.bat”的文件中 (把它放在c:\ temp \ 不要把它放在c:\ windows)
set __rightFolder=.
del "%__rightFolder%\system.ini.copy"
If NOT exist "%__rightFolder%\system.ini.copy" (
copy "%windir%\system.ini" "%__rightFolder%\system.ini.copy"
ECHO "%__rightFolder%\system.ini.copy"
SET /P AREYOUSURE="Do you want to run the dir command on '%__rightFolder%\system.ini.copy'"
IF /I "%AREYOUSURE%" EQU "Y" (
dir "%__rightFolder%\system.ini.copy"
)
)
PAUSE
当我运行这个简单的脚本时,在输入任何内容之前,“IF / I”正在运行。 注意,我有一个很长的问题,引用了问题。
这可能很简单,但我是.bat skillzz臭。
这是我的输出。
C:\Temp>set __rightFolder=.
C:\Temp>del ".\system.ini.copy"
Could Not Find C:\Temp\system.ini.copy
C:\Temp>If NOT exist ".\system.ini.copy" (
copy "C:\Windows\system.ini" ".\system.ini.copy"
ECHO ".\system.ini.copy"
SET /P AREYOUSURE="Do you want to run the dir command on '.\system.ini.copy'"
IF /I "" EQU "Y" (dir ".\system.ini.copy" )
)
1 file(s) copied.
".\system.ini.copy"
Do you want to run the dir command on '".\system.ini.copy"'y
C:\Temp>PAUSE
Press any key to continue . . .
所以我输入'y',但它没有执行“dir”命令。
答案 0 :(得分:1)
无尽的故事...... EnableDelayedExpansion
延迟扩展将导致变量在执行时扩展 时间而不是在解析时,这个选项打开了
SETLOCAL
命令。当延迟扩展实际上是变量可能 使用!variable_name!
引用(除了正常情况%variable_name%
)
修补:
set __rightFolder=.
del "%__rightFolder%\system.ini.copy"
If NOT exist "%__rightFolder%\system.ini.copy" (
copy "%windir%\system.ini" "%__rightFolder%\system.ini.copy"
ECHO "%__rightFolder%\system.ini.copy"
SET /P "AREYOUSURE=Do you want to run the dir command on '%__rightFolder%\system.ini.copy' "
SETLOCAL enabledelayedexpansion
IF /I "!AREYOUSURE!" EQU "Y" (
dir "%__rightFolder%\system.ini.copy"
)
ENDLOCAL
)
PAUSE