Как я могу отладить .BAT-скрипт?
-
03-07-2019 - |
Вопрос
Есть ли способ пошагово выполнить скрипт .bat?Дело в том, что у меня есть скрипт сборки, который вызывает множество других скриптов, и я хотел бы посмотреть, в каком порядке они вызываются, чтобы я мог знать, куда именно мне нужно перейти, и добавить свои изменения.
Решение
Я не знаю, как выполнить пошаговое выполнение файла .bat, но вы можете использовать echo
и pause
чтобы помочь с отладкой.
ЭХО
Отобразит сообщение в пакетном файле.Такие, как ECHO Hello World, при выполнении выведут на экран Hello World.Однако без @ECHO OFF в начале командного файла вы также получите "ECHO Hello World" и "Привет, мир". Наконец, если вы просто хотите создать пустую строку, введите ECHO.добавление точки в конце создает пустую строку.ПАУЗА
Предложите пользователю нажать любую клавишу, чтобы продолжить.
Источник: Справка по пакетному файлу
@workmad3:в ответе содержится больше полезных советов по работе с echo
команда.
Еще один полезный ресурс... DDB:Советы по пакетному файлу DOS
Другие советы
Убедитесь, что в скриптах нет операторов 'echo off', и после вызова каждого скрипта вызовите 'echo on', чтобы сбросить пропущенные вами.
Причина в том, что если оставить эхо-сигнал, то интерпретатор команд будет выводить каждую команду (после обработки параметров) перед ее выполнением. Это выглядит очень плохо для использования в производстве, но очень полезно для целей отладки, так как вы можете увидеть, где выходной файл пошёл не так.
Также убедитесь, что вы проверяете уровни ErrorLevel, установленные вызываемыми пакетными сценариями и программами. Помните, что для этого в файлах .bat используются 2 разных метода. Если вы вызвали программу, уровень ошибки находится в% ERRORLEVEL%, в то время как из пакетных файлов уровень ошибки возвращается в переменной ErrorLevel и не нуждается в% вокруг него.
Столкнувшись с аналогичной проблемой, я нашел следующий инструмент с помощью тривиального поиска в Google :
jpsoft's "Принимайте Командование" включает в себя командный файл IDE / debugger.Их короткое презентационное видео прекрасно демонстрирует это.
Я использую пробную версию уже несколько часов.Вот мое первое скромное мнение:
- С одной стороны, это действительно позволяет отлаживать скрипты .bat и .cmd, и теперь я убежден, что это может помочь во многих случаях
- С другой стороны, иногда он блокируется, и мне приходилось его отключать...особенно при отладке нижних индексов (не всегда систематически)..он не показывает ни "стек вызовов", ни кнопку "выйти".
Это требует попытки.
Я обнаружил, что программное обеспечение 'running steps' (win32) делает именно то, что искал: http://www.steppingsoftware.com/
Вы можете загрузить файл bat, установить точки останова / начать проходить по нему, просматривая выходные данные и переменные среды.
Пробная версия позволяет пройти только 50 строк ... Есть ли у кого-нибудь бесплатная альтернатива с похожими функциями?
отключите @ECHO и вызовите свой пакетный файл, перенаправляющий ВСЕ выходные данные в файл журнала..
c:> yourbatch.bat (необязательные параметры) > yourlogfile.txt 2>&1
найдено по адресу http://www.robvanderwoude.com/battech_debugging.php
ЭТО РАБОТАЕТ!!не забывайте о 2>и1...
ВОЛШЕБНИК
Я могу думать только о том, чтобы посыпать код с помощью echo
и pause
s.
Вы пытались перенаправить результат в файл? Как и все .bat > log.txt
Вы должны убедиться, что в этом случае каждый другой вызываемый скрипт также регистрируется в файле, как > > log.txt
Кроме того, если вы поместите дату / T и время / T в начало и в конец этого пакетного файла, вы получите время, которое было в тот момент, и можете отобразить время и порядок выполнения вашего скрипта. р>
Или....Вызовите ваш основной файл .bat из другого файла .bat и выведите результат в результирующий файл, т.е.
бегун.летучая мышь > mainresults.txt
Где runner.bat вызывает основной файл .bat
Теперь вы должны увидеть все действия, выполненные в файле main .bat
или, откройте окно cmd, затем вызовите пакет оттуда, вывод будет на экране.