批处理脚本 – 调试

批处理脚本 – 调试


通常情况下,您在运行批处理文件时会遇到问题,而且大多数情况下,您需要以某种方式调试批处理文件,以确定批处理文件本身的问题。以下是一些有助于调试批处理脚本文件的技术。

错误信息

要发现消息的来源,请按照以下步骤操作 –

步骤 1 – REM 出 &commatECHO OFF 线,即 REM &commatECHO OFF 或 :: &commatECHO OFF。

步骤 2 – 使用所需的命令行参数运行批处理文件,将所有输出重定向到日志文件以供以后比较。

test.bat > batch.log 2>&1

步骤 3 – 在文件 batch.log 中搜索错误消息

第 4 步– 检查前一行是否有任何意外或无效的命令、命令行开关或值;请特别注意命令中使用的任何环境变量的值。

步骤 5 – 更正错误并重复此过程,直到所有错误消息都消失。

复杂的命令行

另一个常见的错误来源是错误重定向的命令,例如带有错误搜索字符串的“嵌套”FIND 或 FINDSTR 命令,有时在 FOR /F 循环中。

要检查这些复杂命令的有效性,请按照以下步骤操作 –

步骤 1 – 在使用复杂命令集的行之前插入“命令检查行”。

以下是一个示例,其中插入 ECHO 命令以标记第一个 TYPE 命令的输出结束和下一个开始的位置。

TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg 
| FIND 
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"

步骤 2 – 按照上述步骤查找错误消息来源。

第 3 步– 特别注意“简化”命令行的输出:是预期格式的输出吗?“令牌”值或位置是否符合预期?

子程序

生成错误消息的子例程在查找错误原因时带来了额外的“挑战”,因为它们可能会在同一个批处理文件中被多次调用。

为了帮助找出导致错误调用子程序的原因,请按照以下步骤操作 –

步骤 1 – 在脚本开头添加并重置计数器变量 –

SET Counter = 0

步骤 2 – 每次调用子程序时递增计数器,方法是在子程序的开头插入以下行

SET /A Counter&plus=1

步骤 3 – 在计数器增量之后插入另一行,仅包含 SET 命令;这将列出所有环境变量及其值。

步骤 4 – 按照程序查找上述错误消息来源。

Windows 版本

如果您打算将您的批处理文件分发到其他可能运行或不运行相同 Windows 版本的计算机,您将需要在尽可能多的 Windows 版本中测试您的批处理文件。

以下示例显示如何检查各种操作系统版本以检查相关的 Windows 版本。

&commatECHO OFF
:: Check for Windows NT 4 and later

IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT

:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only

觉得文章有用?

点个广告表达一下你的爱意吧 !😁