我想减少以下行的输出:for /F "tokens=10" %a in ('c:\Programme\smartmontools\bin\smartctl.exe -a /dev/hdb ^| findstr /BC:" 9" ') do @echo %a
这一行是从HDD或SSD中提取按小时供电的值.
大多数HDD或SSD给我正确的时间,比如: 3423或什么的。只是简单的价值。
不幸的是,一些金斯敦SSD的值如下: 197h+00m+00.000s
能把产量减少到197吗?
也许用另一根探测仪管?
命令必须位于同一行(!)就像这样:这不管用,但我希望它能解释我的意思。
for /F "tokens=10" %a in ('c:\Programme\smartmontools\bin\smartctl.exe -a /dev/hdb ^| findstr /BC:" 9" | findstr [0-9][0-9]?[0-9]?[0-9]?[0-9]?') do @echo %a对不起我的英语不好!!
发布于 2017-03-24 14:03:33
findstr可以找到包含特定字符串的行,但它无法修改行。
您可以添加另一个for来执行您想做的事情:
@for /F "tokens=10" %a in ('@c:\Programme\smartmontools\bin\smartctl.exe -a /dev/hdb ^| findstr /BC:" 9" ') do @for /f "delims=h" %b in ("%a") do @echo %b(未经验证,因为我没有这个实用程序)
发布于 2017-03-24 15:15:53
看来Zabbix不喜欢第二个堆叠的。由于典型的(缩短)智能this输出如下所示:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 120 099 --- Pre-fail Always - 235885189
3 Spin_Up_Time 0x0023 098 097 --- Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 --- Old_age Always - 442
5 Reallocated_Sector_Ct 0x0033 100 100 --- Pre-fail Always - 0
7 Seek_Error_Rate 0x002f 085 060 --- Pre-fail Always - 347745957
9 Power_On_Hours 0x0032 075 075 --- Old_age Always - 197h+00m+00.000s您可以更改第一个for /f,将字母h作为分隔符,因为该行中没有其他小写h。所以
for /F "tokens=10delims=h " %a in ('c:\Programme\smartmontools\bin\smartctl.exe -a /dev/hdb ^| findstr /BC:" 9" ') do echo %a应产出:
197https://stackoverflow.com/questions/43001343
复制相似问题