有没有办法逐步执行.bat脚本?问题是,我有一个构建脚本,它调用了很多其他脚本,我想看看它们被调用的顺序是什么,这样我就可以知道我到底要去哪里并添加我的修改
答案 0 :(得分:66)
无论如何我都不知道如何逐步执行.bat文件,但您可以使用echo
和pause
来帮助调试。
<强> ECHO 强>
将在批处理文件中回显消息。如ECHO Hello World将在执行时在屏幕上打印Hello World。但是,如果在批处理文件的开头没有@ECHO OFF,您还将获得“ECHO Hello World”和“Hello World”。最后,如果您只想创建一个空行,请键入ECHO。在末尾添加句点会创建一个空行。暂停强>
提示用户按任意键继续。
@ workmad3:answer有更多使用echo
命令的好建议。
另一个有用的资源...... DDB: DOS Batch File Tips
答案 1 :(得分:17)
确保脚本中没有'echo off'语句,并在调用每个脚本以重置您错过的任何内容后调用'echo on'。
原因是如果保持echo,则命令解释器将在执行之前输出每个命令(在参数处理之后)。使其在生产中使用看起来非常糟糕,但对于调试目的非常有用,因为您可以看到输出出错的地方。
此外,请确保您正在检查被调用的批处理脚本和程序设置的ErrorLevels。请记住,.bat文件中使用了两种不同的方法。如果您调用了一个程序,则错误级别为%ERRORLEVEL%,而从批处理文件中,错误级别在ErrorLevel变量中返回,并且不需要%s。
答案 2 :(得分:10)
面对类似的担忧,我发现以下工具有一个简单的谷歌搜索:
JPSoft的“Take Command”包括批处理文件IDE /调试器。他们的short presentation video很好地证明了这一点。
我几个小时后才使用试用版。这是我的第一个拙见:
它试试了。
答案 3 :(得分:7)
我发现'跑步'(win32)软件完全符合我的要求: http://www.steppingsoftware.com/
您可以加载bat文件,在查看输出和环境变量时放置断点/开始单步执行。
评估版只允许跨越50行...有没有人有类似功能的免费替代品?
答案 4 :(得分:6)
退出@ECHO OFF 并调用批处理文件将所有输出重定向到日志文件..
C:GT; yourbatch.bat(可选参数)&gt; yourlogfile.txt 2&gt;&amp; 1
发现于http://www.robvanderwoude.com/battech_debugging.php
IT工作!!不要忘记2&gt;&amp; 1 ...
WIZ
答案 5 :(得分:2)
我能想到的唯一方法就是将代码与echo
和pause
s混合在一起。
答案 6 :(得分:2)
您是否尝试将结果重新路由到文件?喜欢whatever.bat&gt; log.txt
您必须确保在这种情况下,每个其他被调用的脚本也会记录到文件,例如&gt;&gt; log.txt
此外,如果您在该批处理文件的开头和结尾放置日期/ T和时间/ T,您将获得该时间点的时间,并且您可以映射脚本的运行时间和顺序。
答案 7 :(得分:1)
或者.... 从另一个.bat文件中调用主.bat文件,并将结果输出到结果文件,即
runner.bat&gt; mainresults.txt
其中runner.bat调用主.bat文件
您应该会看到现在主.bat文件中执行的所有操作
答案 8 :(得分:0)
一个经常出现的问题是,通过双击其图标来运行批处理脚本。由于批处理脚本完成后,托管命令提示符(cmd.exe
)实例也会终止,因此无法读取潜在的输出和错误消息。
要阅读此类消息,非常重要的一点是,明确打开“命令提示符”窗口,操纵到适用的工作目录并通过键入其路径/名称来运行批处理脚本。
答案 9 :(得分:0)
您可以在脚本末尾使用cmd \k
来查看错误。执行完成后,它不会关闭您的命令提示符
答案 10 :(得分:-2)
或者,打开cmd窗口,然后从那里调用批处理,输出将显示在屏幕上。