在上述的代码中,如果截取的数字后面有空格,则会影响数字大小比对。

在此代码中,'TotalWrite'变量用于存储从'smartctl'命令输出中提取的写入数据单元的数量。如果该值大于200,那么屏幕的颜色将变为红色,并显示总写入计数。然后,它会暂停程序的执行,直到用户按下任意键。接下来,它会启动'diskinfo.exe'程序,最后跳转到'TotalWrite'。

然而,如果截取的数字后面有空格,例如'TotalWrite'的值为'100 GB ',那么在比对时将无法正确判断该值是否大于200。为了解决这个问题,你可以使用'set'命令的字符串替换功能来去除空格,然后再进行比对。修改后的代码如下所示:

for /f "tokens=3 delims=[,GB]" %%a in ('smartctl -a /dev/sda ^| find /i "Data Units Written:"') do (
    set "TotalWrite=%%a"
    set "TotalWrite=%TotalWrite: =%"
)

if %TotalWrite% GTR 200 (
    color 4
    cls
    echo SSD Total Write count: %TotalWrite%GB
    pause >nul
    start /wait diskinfo.exe
    goto TotalWrite
)

这样,即使截取的数字后面有空格,也不会影响数字大小的比对。

Batch 脚本中处理截取的带空格数字:解决 smartctl 命令输出问题

原文地址: https://www.cveoy.top/t/topic/qcKp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录