Как я могу отладить .BAT script?

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

Ответ 1

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

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

PAUSE
Попросите пользователя нажать любую клавишу, чтобы продолжить.

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

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

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

Ответ 2

Удостоверьтесь, что в сценариях нет выражений "echo off" и вызывается "echo on" после вызова каждого script в reset любого пропущенного.

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

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

Ответ 3

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

JPSoft Take Command включает в себя пакетный IDE/отладчик. Их видеоролик демонстрирует это красиво.

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

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

Он пытается попробовать.

Ответ 4

Я нашел программное обеспечение "running steps" (win32), выполняющее именно то, что я искал: http://www.steppingsoftware.com/

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

Оценочная версия позволяет только выполнить 50 строк... Есть ли у кого-нибудь бесплатная альтернатива с аналогичной функциональностью?

Ответ 5

удалите @ECHO OFF и вызовите ваш пакетный файл redirectin ALL output в файл журнала.

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

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

ЭТО РАБОТАЕТ!! не забывайте 2 > & 1...

WIZ

Ответ 6

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

Ответ 7

Вы пытались перенаправить результат в файл? Как и в любом случае .bat > log.txt

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

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

Ответ 8

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

runner.bat > mainresults.txt

Если runner.bat вызывает основной .bat файл

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

Ответ 9

Это правильный ответ.

command /y /C   myfile.bat

или   команда /y/k myfile.bat /y Выполняет пакетную программу, заданную /C или/K. (Доступно только в MS-DOS 6.x и выше). /c Выполняет пакетную программу, заданную параметром /C или/K. (Доступно только в MS-DOS 6.x и выше).

Возможно, вы захотите добавить другие параметры, такие как /z для

Не работает для систем ниже dos 6 или выше Windows 98. Я не думаю, что это работает для windows nt pre 2000.

Я установил msdos 7.1 в virtualbox для проверки.

Ответ 10

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