2017-03-24 2 views
1

을 줄일 수 있습니다.내가 다음 줄의 출력을 줄이려의 Findstr 출력

대부분의 HDD 또는 SSD는 3423과 같은 정확한 시간을줍니다. 단순한 가치.

불행하게도, 일부 킹스톤 SSD는 다음과 같은 값을 가지고 197h + 00m + 00.000s

는 197으로 출력을 감소 할 수 있습니까?

아마도 다른 findstr 파이프가 있습니까?

명령이 뭔가 같은 줄 (!)에 있어야합니다. 이것은 작동하지 않지만 그 의미가 무엇인지 설명하기를 바랍니다.

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 

내 나쁜 영어로 죄송합니다 !!

답변

0

findstr은 특정 문자열이 포함 된 줄을 찾을 수 있지만 줄을 수정할 수는 없습니다. 당신은 당신이 원하는 일을하기 위해 다른 for를 추가 할 수 있습니다

: Zabbix가 쌓아 두 번째를 좋아하지 않는처럼

@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 

(확인되지 ​​않은, 내가하지 않는 한이 유틸리티)

+0

좋은 직업, 감사합니다! 하지만 .... 나는이 줄을 zabbix Userparameter에 넣어야하고 출력은 다음과 같이 보일 것입니다./F "delims = h"% B in ("197h + 00m + 00.000s")에 대해 C : \ Windows \ system32> @echo % b 197. "c : \ windows ..."행의 출력을 억제 할 수 있습니까? – Daniel4711

+0

필자는 단지 197 – Daniel4711

+0

만 있으면'@'을 사용하여 명령 반복을 억제 할 수 있습니다. 내 편집을 참조하십시오. – Stephan

0

보인다. 전형적인 (단축) smartctl 출력은 다음과 같습니다 이후 :

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 

를 그 라인에 다른 소문자 시간이 없기 때문에 당신은 구분 기호로 문자 h을 포함하는 최초의 for /f을 변경할 수 있습니다. 그래서

for /F "tokens=10delims=h " %a in ('c:\Programme\smartmontools\bin\smartctl.exe -a /dev/hdb ^| findstr /BC:" 9" ') do echo %a 

출력해야 :

197 
+1

이것은 내 첫 번째 생각 이었지만, 내가 알지 못했을 때 결과물은 어떤 것일까 ... 나는 개인적으로 findstr/BC 대신에'find "Power_On_Hours"'를 사용할 것이다. 가독성. – Stephan

관련 문제