我在批处理文件中通过与IF命令相关的搜索返回的结果浏览了这篇文章,并且我忍不住纠正这一错误观念的机会,即IF块仅限于单个命令。以下是生产Windows NT命令脚本的一部分,该脚本每天在我撰写此回复的计算机上运行。
if "%COPYTOOL%" equ "R" (
WWLOGGER.exe "%APPDATA%\WizardWrx\%~n0.LOG" "Using RoboCopy to make a backup of %USERPROFILE%\My Documents\Outlook Files\*"
%TOOLPATH% %SRCEPATH% %DESTPATH% /copyall %RCLOGSTR% /m /np /r:0 /tee
C:\BIN\ExitCodeMapper.exe C:\BIN\ExitCodeMapper.INI[Robocopy] %TEMP%\%~n0.TMP %ERRORLEVEL%
) else (
WWLOGGER.exe "%APPDATA%\WizardWrx\%~n0.LOG" "Using XCopy to make a backup of %USERPROFILE%\My Documents\Outlook Files\*"
call %TOOLPATH% "%USERPROFILE%\My Documents\Outlook Files\*" "%USERPROFILE%\My Documents\Outlook Files\_backups" /f /m /v /y
C:\BIN\ExitCodeMapper.exe C:\BIN\ExitCodeMapper.INI[Xcopy] %TEMP%\%~n0.TMP %ERRORLEVEL%
)
也许两行或更多行的代码块仅适用于Windows NT命令脚本(.CMD文件),因为对仅限于老式批处理(.BAT)文件的应用程序的生产脚本目录的搜索仅显示了一个命令代码块。由于该应用程序已经过扩展维护(这意味着我没有积极参与支持它),所以我不能说那是因为我不需要多条线,还是不能使它们正常工作。
无论哪种情况,如果后者是正确的话,都有一个简单的解决方法;将多行移动到单独的批处理文件或批处理文件子例程中。我知道后者可以在两种脚本中使用。