Есть ли способ выполнить сценарий .bat? Дело в том, что у меня есть сценарий сборки, который вызывает множество других сценариев, и я хотел бы посмотреть, в каком порядке они вызываются, чтобы я мог знать, где именно мне нужно идти, и добавлять свои модификации. .
Взгляните на следующие ресурсы: это сообщение Mofi и TutorialsPoint - Пакетный сценарий - Отладка, Страницы сценариев Роба ван дер Вуда - Отладка ваших командных файлов





Единственный способ, который я могу придумать, - это добавить в код 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
Думаю, это мои единственные варианты.
Вы пытались перенаправить результат в файл? Как something.bat> log.txt
Вы должны убедиться, что в этом случае все остальные вызываемые скрипты также записываются в файл, например >> log.txt.
Кроме того, если вы поместите дату / T и время / T в начало и в конец этого командного файла, вы получите время, когда оно было в этот момент, и вы можете сопоставить время и порядок выполнения сценария.
Запись результата в файл не очень помогает, вызывается много скриптов, а также выполняется множество исполняемых файлов.
Если все остальные скрипты и программы пишут на стандартный ввод, то все их сообщения тоже регистрируются. Если вы просто выполняете пакет и видите, что работает много сообщений, вы можете перенаправить их в файл журнала.
Убедитесь, что в сценариях нет операторов «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, ad a) да, командный файл может или не может выдавать консольный вывод, но вы не узнаете, если дважды щелкнете его значок, но при запуске из cmd.exe покажет это в случае; ad b) ваше утверждение неверно, командный файл не должен работать, может быть даже фатальная синтаксическая ошибка, которая обычно генерирует сообщение об ошибке консоли ...
Я обнаружил, что программное обеспечение «бегущие шаги» (win32) делает именно то, что я искал: http://www.steppingsoftware.com/
Вы можете загрузить файл bat, поставить точки останова / начать переходить по нему, видя выходные данные и переменные среды.
В ознакомительной версии можно пройти только 50 строк ... Есть ли у кого-нибудь бесплатная альтернатива с аналогичной функциональностью?
Они потеряли этот домен и, по-видимому, вышли из бизнеса. Вы по-прежнему можете загрузить ознакомительную версию программного обеспечения с сайта web.archive.org/web/20120421211043/http://…, но больше не можете приобрести лицензию.
Столкнувшись с подобной проблемой, я нашел следующий инструмент с помощью простого поиска в Google:
JPSoft "Взять на себя командование" включает в себя пакетный файл IDE / отладчик. Их короткое презентационное видео прекрасно это демонстрирует.
Использую пробную версию уже несколько часов. Вот мое первое скромное мнение:
Это делает попытку.
Вероятно, это должен быть комментарий
@KyleMit, пожалуйста, объясните почему? поскольку это отдельное решение, отличное от других, и оно отвечает на исходный вопрос? это не потому, что он достаточно короткий, чтобы поместиться в комментарии, он должен быть ..
На самом деле я имел в виду наверное, поскольку это могло произойти в любом случае. Но это своего рода ответ lmgtfy. Из раздела справочный центр ответ: Always quote the most relevant part of an important link. Без ссылки этот ответ исчезает, что, опять же, вероятно, нормально, но обычно этот тип специального предложения непроверенного проприетарного программного обеспечения, как правило, лучше всего вписывается в комментарий. Не стесняйтесь оставить и его.
Довольно частая проблема заключается в том, что пакетный сценарий запускается двойным щелчком по его значку. Поскольку экземпляр командной строки хоста (cmd.exe) также завершает работу, как только завершается пакетный сценарий, невозможно прочитать потенциальные выходные данные и сообщения об ошибках.
Чтобы прочитать такие сообщения, очень важно, чтобы вы явно открывали окно командной строки, переходили в соответствующий рабочий каталог и запускали пакетный скрипт, введя его путь / имя.
вы можете использовать cmd \k в конце вашего скрипта, чтобы увидеть ошибку. он не закроет вашу командную строку после завершения выполнения
Собственно это cmd /K. Да и вообще что не так с pause?
4dos имеет встроенный отладчик.