Я наткнулся на эту статью в результатах, возвращаемых поиском, связанным с командой 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), обнаружен только один Командные блоки. Поскольку приложение перешло в расширенное обслуживание (то есть я не активно поддерживаю его), я не могу сказать, является ли это причиной того, что мне не нужно больше одной строки, или я не могу заставить их работать.
В любом случае, если последнее верно, существует простой обходной путь; переместите несколько строк в отдельный пакетный файл или в подпрограмму пакетного файла. Я знаю, что последний работает в обоих видах сценариев.