Как я могу отладить скрипт .BAT? - PullRequest
85 голосов
/ 03 октября 2008

Есть ли способ пройти через скрипт .bat? Дело в том, что у меня есть скрипт сборки, который вызывает много других скриптов, и я хотел бы посмотреть, в каком порядке они вызываются, чтобы я мог знать, где именно мне нужно идти, и добавлять свои модификации .

Ответы [ 9 ]

66 голосов
/ 03 октября 2008

В любом случае я не знаю, как выполнить выполнение файла .bat, но вы можете использовать echo и pause для помощи в отладке.

ECHO
Будет отображаться сообщение в командном файле. Например, ECHO Hello World будет выводить Hello World на экран при выполнении. Однако без @ECHO OFF в начале командного файла вы также получите «ECHO Hello World» и «Hello World». Наконец, если вы хотите создать пустую строку, введите ECHO. добавление периода в конце создает пустую строку.

ПАУЗА
Предложите пользователю нажать любую клавишу для продолжения.

Источник: Справка по пакетным файлам

@ workmad3: у ответа есть несколько полезных советов по работе с командой echo.

Еще один полезный ресурс ... DDB: Советы по пакетному файлу DOS

17 голосов
/ 03 октября 2008

Убедитесь, что в скриптах нет операторов 'echo off', и после вызова каждого скрипта вызовите 'echo on', чтобы сбросить все пропущенные вами.

Причина в том, что если эхо-сигнал оставлен включенным, то интерпретатор команд будет выводить каждую команду (после обработки параметров) перед ее выполнением. Это выглядит очень плохо для использования в производстве, но очень полезно для целей отладки, так как вы можете увидеть, где выходной файл пошёл не так.

Также убедитесь, что вы проверяете уровни ErrorLevel, установленные вызываемыми пакетными сценариями и программами. Помните, что для этого в файлах .bat используются 2 разных метода. Если вы вызвали программу, уровень ошибки находится в% ERRORLEVEL%, в то время как из пакетных файлов уровень ошибки возвращается в переменной ErrorLevel и не нуждается в% вокруг него.

10 голосов
/ 20 ноября 2013

Столкнувшись с подобной проблемой, я нашел следующий инструмент с тривиальным поиском в Google:

JPSoft's " Take Command " включает в себя IDE / отладчик командного файла. Их короткое презентационное видео прекрасно это демонстрирует.

Я пользуюсь пробной версией уже несколько часов. Вот мое первое скромное мнение:

  • С одной стороны, он действительно позволяет отлаживать скрипты .bat и .cmd, и теперь я убежден, что это может помочь в некоторых случаях
  • С другой стороны, иногда он блокируется, и мне приходилось его убивать ... особенно при отладке подписок (не всегда систематически) ... он не отображает ни стек вызовов, ни кнопку выхода 1016 *

Это отменяет попытку.

7 голосов
/ 18 августа 2010

Я обнаружил, что программное обеспечение 'running steps' (win32) делает именно то, что искал: http://www.steppingsoftware.com/

Вы можете загрузить файл bat, установить точки останова / начать проходить по нему, просматривая выходные данные и переменные окружения.

Пробная версия позволяет проходить только 50 строк ... У кого-нибудь есть бесплатная альтернатива с похожими функциями?

6 голосов
/ 22 августа 2009

отключить @ECHO OFF и вызовите ваш пакетный файл перенаправить все выходные в файл журнала ..

c:> yourbatch.bat (необязательные параметры)> yourlogfile.txt 2> & 1

найдено на http://www.robvanderwoude.com/battech_debugging.php

ЭТО РАБОТАЕТ !! не забудьте 2> & 1 ...

WIZ

2 голосов
/ 03 октября 2008

Вы пытались перенаправить результат в файл? Например, what.bat> log.txt

Вы должны убедиться, что в этом случае любой другой вызываемый скрипт также регистрируется в файле, как >> log.txt

Также, если вы поместите дату / T и время / T в начало и в конец этого пакетного файла, вы получите время, которое было в тот момент, и вы можете отобразить время и порядок выполнения вашего скрипта.

2 голосов
/ 03 октября 2008

Единственное, о чем я могу думать, это посыпать код с помощью echo s и pause s.

1 голос
/ 27 ноября 2008

Или .... Вызовите ваш основной файл .bat из другого файла .bat и выведите результат в файл результатов, т.е.

runner.bat> mainresults.txt

Где runner.bat вызывает основной файл .bat

Теперь вы должны увидеть все действия, выполненные в основном .bat-файле

0 голосов
/ 29 мая 2010

или, откройте окно cmd, затем вызовите пакет оттуда, вывод будет на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...