我怎样才能debugging.BAT脚本?

有没有办法通过.bat脚本? 事情是,我有一个构build脚本,它调用了很多其他脚本,我想看看它们被调用的顺序是什么,以便我可以知道我到底要去哪里并添加我的修改。

反正我不知道要逐步执行.bat文件,但可以使用echopause来帮助调试。

回声
将在批处理文件中回显消息。 如ECHO Hello World将在执行时在屏幕上打印Hello World。 但是,如果在批处理文件的开头没有@ECHO关闭,您还将获得“ECHO Hello World”和“Hello World”。 最后,如果您只想创建一个空白行,请键入ECHO。 在最后添加句号会创建一个空行。

暂停
提示用户按任意键继续。

来源: 批处理文件帮助

@ workmad3:answer对于使用echo命令有更好的技巧。

另一个有用的资源… DDB:DOS批处理文件提示

确保在脚本中没有“echo off”语句,并在调用每个脚本来重置任何你错过之后调用“echo on”。

原因是如果回声留下,那么命令解释器将在执行之前输出每个命令(在参数处理之后)。 使其在生产中看起来非常糟糕,但对于调试的目的非常有用,因为您可以看到输出出错的地方。

此外,请确保您正在检查由调用的批处理脚本和程序设置的ErrorLevels。 请记住在.bat文件中使用了两种不同的方法。 如果你调用了一个程序,错误级别是%ERRORLEVEL%,而来自批处理文件的错误级别则返回ErrorLevel变量中,而不需要%。

面对类似的担忧,我发现了一个简单的谷歌搜索下面的工具:

JPSoft的“ Take Command ”包含一个批处理文件IDE /调试器。 他们简短的演示视频很好地展示了它。

几个小时后我正在使用试用版。 这是我的第一个拙见:

  • 一方面,它确实允许调试.bat和.cmd脚本,现在我相信它在相当多的情况下可以提供帮助
  • 另一方面,它有时会阻塞,我不得不杀死它…特别是在调试下标时(并不总是系统地)。它不显示“调用堆栈”或“跳出”按钮。

这是一个尝试。

我发现了“正在运行的步骤”(win32)软件正在做我正在寻找的: http : //www.steppingsoftware.com/

您可以加载一个bat文件,在查看输出和环境变量的同时放置断点/开始单步执行。

评估版本只允许通过50行…有没有人有一个免费的替代具有类似的功能?

远离@ECHO关闭,并将您的批处理文件redirectin ALL输出到一个日志文件..

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

发现在http://www.robvanderwoude.com/battech_debugging.php

有用!! 别忘了2>&1 …

WIZ

我能想到的唯一方法就是用echo s来pause代码,然后pause

您是否尝试将结果重新路由到文件? 像whatever.bat> log.txt

您必须确保在这种情况下,其他所谓的脚本也会记录到文件中,例如>> log.txt

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

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

runner.bat> mainresults.txt

runner.bat调用主.bat文件

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

这是正确的答案。

 command /y /C myfile.bat 

或命令/ y / k myfile.bat / y执行/ C或/ K指定的批处理程序。 (仅在MS-DOS 6.x及更高版本中可用)。 / c执行/ C或/ K指定的批处理程序。 (仅在MS-DOS 6.x及更高版本中可用)。

您可能想要添加其他参数,例如/ z for

不适用于DOS 6或以上的Windows 98以下的系统。我不认为它适用于Windows NT 2000以前的版本。

我在virtualbox中安装了msdos 7.1来验证。

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