Пакетный скрипт - отладка
Очень часто вы можете столкнуться с проблемами при запуске командных файлов, и чаще всего вам нужно будет отладить ваши командные файлы тем или иным способом, чтобы определить проблему с самим командным файлом. Ниже приведены некоторые методы, которые могут помочь в отладке файлов пакетного сценария.
Сообщения об ошибках
Чтобы обнаружить источник сообщения, выполните следующие действия:
Step 1 - УДАЛИТЬ линию @ECHO OFF, т.е. REM @ECHO OFF или :: @ECHO OFF.
Step 2 - Запустите командный файл с необходимыми параметрами командной строки, перенаправив весь вывод в файл журнала для последующего сравнения.
test.bat > batch.log 2>&1
Step 3 - Найдите в файле batch.log сообщения об ошибках.
Step 4- Проверьте предыдущую строку на наличие непредвиденных или недопустимых команд, переключателей или значений командной строки; обратите особое внимание на значения любых переменных среды, используемых в команде.
Step 5 - Исправьте ошибку и повторяйте этот процесс, пока все сообщения об ошибках не исчезнут.
Сложные командные строки
Другой распространенный источник ошибок - это неправильно перенаправленные команды, такие как, например, «вложенные» команды FIND или FINDSTR с неверными строками поиска, иногда внутри цикла FOR / F.
Чтобы проверить правильность этих сложных команд, выполните следующие действия:
Step 1 - Вставьте «строки проверки команд» непосредственно перед строкой, в которой используется сложный набор команд.
Ниже приведен пример, в котором команда ECHO вставлена, чтобы отметить, где заканчивается вывод первой команды TYPE и начинается следующая.
TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg
| FIND
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"
Step 2 - Следуйте процедуре, чтобы найти источники сообщений об ошибках, описанные выше.
Step 3- Обратите особое внимание на вывод «упрощенных» командных строк: соответствует ли вывод ожидаемому формату? Соответствует ли значение или позиция «токена»?
Подпрограммы
Подпрограммы, генерирующие сообщения об ошибках, представляют собой дополнительную «проблему» при поиске причины ошибки, поскольку они могут вызываться несколько раз в одном и том же командном файле.
Чтобы выяснить, что вызывает неправильный вызов подпрограммы, выполните следующие действия:
Step 1 - Добавить и сбросить переменную счетчика в начале скрипта -
SET Counter = 0
Step 2 - Увеличивайте счетчик каждый раз, когда вызывается подпрограмма, вставляя следующую строку в начало подпрограммы
SET /A Counter+=1
Step 3- Вставить следующую строку сразу после инкремента счетчика, содержащую только команду SET; это перечислит все переменные среды и их значения.
Step 4 - Следуйте процедуре, чтобы найти источники сообщений об ошибках, описанные выше.
Версии Windows
Если вы собираетесь распространять свои командные файлы на другие компьютеры, которые могут работать или не работать с той же версией Windows, вам необходимо будет протестировать свои командные файлы в максимально возможном количестве версий Windows.
В следующем примере показано, как проверить различные версии операционной системы, чтобы проверить соответствующие версии Windows.
@ECHO OFF
:: Check for Windows NT 4 and later
IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT
:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only