- 批处理脚本教程
- 批处理脚本 - 首页
- 批处理脚本 - 概述
- 批处理脚本 - 环境
- 批处理脚本 - 命令
- 批处理脚本 - 文件
- 批处理脚本 - 语法
- 批处理脚本 - 变量
- 批处理脚本 - 注释
- 批处理脚本 - 字符串
- 批处理脚本 - 数组
- 批处理脚本 - 决策
- 批处理脚本 - 运算符
- 批处理脚本 - 日期和时间
- 批处理脚本 - 输入/输出
- 批处理脚本 - 返回代码
- 批处理脚本 - 函数
- 批处理脚本 - 进程
- 批处理脚本 - 别名
- 批处理脚本 - 设备
- 批处理脚本 - 注册表
- 批处理脚本 - 网络
- 批处理脚本 - 打印
- 批处理脚本 - 调试
- 批处理脚本 - 日志记录
- 批处理脚本资源
- 批处理脚本 - 快速指南
- 批处理脚本 - 有用资源
- 批处理脚本 - 讨论
批处理脚本 - 调试
当您处理大型复杂的批处理脚本时,调试批处理脚本变得非常重要。
以下是您可以用来调试批处理文件的方法。
使用 echo 命令
一个非常简单的调试选项是在您的批处理脚本中尽可能多地使用 echo 命令。它将在命令提示符中显示消息,并帮助您调试出错的地方。
这是一个简单的示例,它根据给定的输入显示偶数。echo 命令用于显示结果,以及如果未给出输入。同样,当您认为可能发生错误时,可以使用 echo 命令。例如,如果给定的输入是负数,小于 2 等。
示例
@echo off if [%1] == [] ( echo input value not provided goto stop ) rem Display numbers for /l %%n in (2,2,%1) do ( echo %%n ) :stop pause
输出
C:\>test.bat 10 2 4 6 8 10 22 Press any key to continue ...
使用 pause 命令
另一种方法是在发生错误时暂停批处理执行。当脚本暂停时,开发人员可以修复问题并重新启动处理。
在下面的示例中,由于输入值是必填项且未提供,因此批处理脚本暂停。
示例
@echo off if [%1] == [] ( echo input value not provided goto stop ) else ( echo "Valid value" ) :stop pause
输出
C:\>test.bat input value not provided Press any key to continue..
将错误消息记录到另一个文件
仅查看命令提示符上显示的一堆 echo 可能很难调试错误。另一种简单的方法是将这些消息记录到另一个文件中,然后一步一步地查看它以了解发生了什么错误。
这是一个示例,请考虑以下 test.bat 文件
net statistics /Server
.bat 文件中给出的命令是错误的。让我们记录消息并看看我们得到了什么。
在您的命令行中执行以下命令
C:\>test.bat > testlog.txt 2> testerrors.txt
testerrors.txt 文件将显示如下所示的错误消息
The option /SERVER is unknown. The syntax of this command is: NET STATISTICS [WORKSTATION | SERVER] More help is available by typing NET HELPMSG 3506.
查看上面的文件,开发人员可以修复程序并再次执行。
使用 ErrorLevel 检测错误并记录它们
如果命令成功执行,Errorlevel 返回 0;如果命令失败,则返回 1。
考虑以下示例
@echo off PING google.com if errorlevel 1 GOTO stop :stop echo Unable to connect to google.com pause
在执行过程中,您可以看到错误和日志
C:\>test.bat > testlog.txt
testlog.txt
Pinging google.com [172.217.26.238] with 32 bytes of data: Reply from 172.217.26.238: bytes=32 time=160ms TTL=111 Reply from 172.217.26.238: bytes=32 time=82ms TTL=111 Reply from 172.217.26.238: bytes=32 time=121ms TTL=111 Reply from 172.217.26.238: bytes=32 time=108ms TTL=111 Ping statistics for 172.217.26.238: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 82ms, Maximum = 160ms, Average = 117ms Connected successfully Press any key to continue . . .
如果失败,您将在 testlog.txt 中看到以下日志。
Ping request could not find host google.com. Please check the name and try again. Unable to connect to google.com Press any key to continue . . .
广告