Есть ли способ перейти через .bat script? Дело в том, что у меня есть сборка script, которая вызывает много других скриптов, и я хотел бы посмотреть, какой порядок их вызова, чтобы я мог знать, куда именно мне нужно идти и добавить мои модификации.
Как я могу отладить .BAT 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, затем вызовите пакет, вывод будет на экране.