如何调试.BAT脚本?

时间:2020-03-06 15:03:51  来源:igfitidea点击:

有没有办法逐步执行.bat脚本?关键是,我有一个构建脚本,该脚本可以调用许多其他脚本,并且我想看看它们的调用顺序是什么,以便我可以确切知道要去哪里并添加修改。

解决方案

我能想到的唯一方法是用echos和pauses弄乱代码。

我不知道逐步执行.bat文件是什么,但是我们可以使用echopause来帮助调试。

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批处理文件提示

我们是否尝试将结果重新路由到文件?像what.bat> log.txt一样

我们必须确保在这种情况下,其他所有称为脚本的脚本也都记录到>> log.txt之类的文件中

另外,如果我们在该批处理文件的开头和结尾放置日期/ T和时间/ T,我们将获得当时的时间,并且可以映射脚本的运行时间和顺序。

确保脚本中没有" echo off"语句,并在调用每个脚本以重置所有我们错过的脚本后调用" echo on"。

原因是如果保留了echo,则命令解释器将在执行命令之前输出每个命令(在参数处理之后)。使它看起来真的不适合在生产环境中使用,但对于调试目的非常有用,因为我们可以看到输出出了问题。

另外,请确保我们正在检查由调用的批处理脚本和程序设置的ErrorLevels。请记住,.bat文件中使用了两种不同的方法。如果我们调用了程序,则错误级别以%ERRORLEVEL%表示,而从批处理文件中,错误级别将在ErrorLevel变量中返回,并且不需要在%周围。

或者....
从另一个.bat文件中调用主.bat文件,并将结果输出到结果文件,即

Runner.bat> mainresults.txt

Runner.bat调用主.bat文件的位置

我们现在应该看到在主.bat文件中执行的所有操作

取消@ECHO OFF
并调用批处理文件redirectin ALL输出到日志文件。

c:> yourbatch.bat(可选参数)> yourlogfile.txt 2>&1

可在http://www.robvanderwoude.com/battech_debugging.php找到

有用!!不要忘记2>&1 ...

威士

或者,打开一个cmd窗口,然后从那里调用批处理,输出将显示在屏幕上。

我发现"运行步骤"(win32)软件完全可以满足我的需求:
http://www.steppingsoftware.com/

我们可以加载一个bat文件,放置断点/开始逐步查看它,同时查看输出和环境变量。

评估版仅允许浏览50条线...有人可以免费使用具有类似功能的替代产品吗?