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

在此代码中,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
)

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

for f tokens=3 delims=GB a in smartctl -a devsda ^ find i Data Units Written do set TotalWrite=a if TotalWrite GTR 200 color 4 & cls & echo SSD Total Write countTotalWriteGB & pause nul & start wait d

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

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