Windows批处理文件调试器?

5

有没有像Visual Studio这样的程序可以让你调试(dos)批处理文件?我可以使用什么技术来调试?Martin Brown用一个漂亮的for / each循环回答了一个批处理文件问题。我想看到变量在循环中的值。

for /R A %i IN (*.jpg) DO xcopy %i B /M


如果您需要调试批处理文件,可能您正在使用错误的工具。为什么不尝试使用cscript.exe呢? - dr. evil
7个回答

5

如果想在循环中打印变量的值,可以尝试以下代码:

for /l %A in (1,1,10) do (
    @echo %A
)

如果你想在每行代码执行时停下来检查,可以尝试以下方法:
for /l %A in (1,1,10) do (
    @echo %A
    pause
)

这将在每次迭代时停止脚本。

你的例子看起来像是一个图片备份脚本;

for /R %i in (*.jpg) do (
    @echo %i
    xcopy %i %DESTINATION% /M
)

如果您制作一个脚本,您可以将所有输出重定向到日志文件中,只需不要忘记在非命令行输入时使用%%i而不是%i。

不错。我不知道你可以在for循环中使用do的括号。现在,“echo this”语句对于for循环有意义了。 - Zachary Scott

2

Running Steps 就像一个 IDE。你会得到一个“分析器”,它相当于编译器。它会显示代码中的错误和警告。它还有一个集成环境,允许你跨过、进入等操作。它甚至可以展开循环,我觉得这很棒。在http://www.steppingsoftware.com上查看吧,它对我帮助很大。


2

除了简单地输出“HERE I AM”之外,你是指还有别的方法吗?我不知道有什么其他方法。我只是通过注释掉操作并添加echo语句来调试批处理文件,直到确定其正确工作。我还编写了自己的一行“outputdebugstring”应用程序,它将命令行上的任何内容发送到调试器中,但这对于大多数批处理可能并不必要,因为你可以直接观察屏幕。插入“pause”可以帮助减缓速度。

最好的问候 唐


通常情况下,去掉“echo off”在确定错误具体发生的位置方面非常有帮助。 - Joey
我喜欢“echo this”语句。由于有多个流,您能否设置一个变量进行调试,然后将其与正常输出分开处理?类似于2>&1这样的东西? - Zachary Scott

2

我找到了一个叫做Running Steps的工具。你可以在它的主页上了解更多信息。无论如何,它支持断点、单步调试等功能 :)


链接已经失效,这是一个广告网站。 :( - Erxin
两个链接都失效了! - Nayana Adassuriya

1

喜欢VS吗?我不知道。

就变量值而言,您总是可以将它们打印出来。


1

我使用Notepad++来为我编写/修改时至少提供颜色编码。


0

正如其他用户所提到的,您可以使用Running Steps软件。

您可以从这里下载它。


1
似乎仅适用于x86(32位)机器,仅限30天试用版本。开发者(https://stackoverflow.com/users/756697/gonzalo-isaza)似乎不再维护该软件或提供许可证。 - Thomas H. Schmidt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接