Я натрапив на цю статтю в результатах пошуку, пов’язаних із командою 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), виявив лише блоки з однією командою . Оскільки додаток перейшло на тривале технічне обслуговування (це означає, що я не беру участь у його підтримці), я не можу сказати, чи це тому, що мені не потрібно було більше одного рядка, чи що я не міг змусити їх працювати.
Незалежно від того, якщо останнє відповідає дійсності, існує просте обхідне рішення; перемістити кілька рядків або в окремий пакетний файл, або в підпрограму пакетного файлу. Я знаю, що останній працює в обох видах сценаріїв.