Как я могу отладить сценарий .BAT?

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

4dos имеет встроенный отладчик.

user459513 27.09.2010 17:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
98
2
170 986
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

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

Ответ принят как подходящий

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

ECHO
Will echo a message in the batch file. Such as ECHO Hello World will print Hello World on the screen when executed. However, without @ECHO OFF at the beginning of the batch file you'll also get "ECHO Hello World" and "Hello World." Finally, if you'd just like to create a blank line, type ECHO. adding the period at the end creates an empty line.

PAUSE
Prompt the user to press any key to continue.

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

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

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

Думаю, это мои единственные варианты.

Vhaerun 03.10.2008 11:12

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

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

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

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

Vhaerun 03.10.2008 10:56

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

Biri 03.10.2008 11:01

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

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

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

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

runner.bat> mainresults.txt

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

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

удалить @ECHO OFF и вызовите перенаправление командного файла ВСЕ выходные данные в файл журнала ..

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

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

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

WIZ

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

Это делает так много неверных предположений, что даже не является ответом. вероятно, самые большие две: а) предполагается, что командный файл производит вывод консоли. Это не обязательно, и б) командный файл действительно работает

Leliel 05.12.2017 21:38

@Leliel, ad a) да, командный файл может или не может выдавать консольный вывод, но вы не узнаете, если дважды щелкнете его значок, но при запуске из cmd.exe покажет это в случае; ad b) ваше утверждение неверно, командный файл не должен работать, может быть даже фатальная синтаксическая ошибка, которая обычно генерирует сообщение об ошибке консоли ...

aschipfl 22.10.2020 13:18

Я обнаружил, что программное обеспечение «бегущие шаги» (win32) делает именно то, что я искал: http://www.steppingsoftware.com/

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

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

Они потеряли этот домен и, по-видимому, вышли из бизнеса. Вы по-прежнему можете загрузить ознакомительную версию программного обеспечения с сайта web.archive.org/web/20120421211043/http://…, но больше не можете приобрести лицензию.

twasbrillig 17.09.2014 08:38

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

JPSoft "Взять на себя командование" включает в себя пакетный файл IDE / отладчик. Их короткое презентационное видео прекрасно это демонстрирует.

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

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

Это делает попытку.

Вероятно, это должен быть комментарий

KyleMit 20.11.2013 17:08

@KyleMit, пожалуйста, объясните почему? поскольку это отдельное решение, отличное от других, и оно отвечает на исходный вопрос? это не потому, что он достаточно короткий, чтобы поместиться в комментарии, он должен быть ..

Myobis 20.11.2013 17:39

На самом деле я имел в виду наверное, поскольку это могло произойти в любом случае. Но это своего рода ответ lmgtfy. Из раздела справочный центр ответ: Always quote the most relevant part of an important link. Без ссылки этот ответ исчезает, что, опять же, вероятно, нормально, но обычно этот тип специального предложения непроверенного проприетарного программного обеспечения, как правило, лучше всего вписывается в комментарий. Не стесняйтесь оставить и его.

KyleMit 20.11.2013 17:53

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

Чтобы прочитать такие сообщения, очень важно, чтобы вы явно открывали окно командной строки, переходили в соответствующий рабочий каталог и запускали пакетный скрипт, введя его путь / имя.

вы можете использовать cmd \k в конце вашего скрипта, чтобы увидеть ошибку. он не закроет вашу командную строку после завершения выполнения

Собственно это cmd /K. Да и вообще что не так с pause?

aschipfl 22.10.2020 13:19

Другие вопросы по теме