bat文件运行的“如果”让输入参数
问题描述:
在一个名为“mybat.bat” 文件将这个前检查(把它放在C:\ TEMP \ 不要把它放在C:\ WINDOWS)bat文件运行的“如果”让输入参数
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”命令。
答
无休止的故事... 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
感谢。这节省了一天(明天)。我绝对不是“蝙蝠侠”的人。帕杜转储。 (我每周都在这里)。 – granadaCoder 2015-04-05 23:43:26