phill93
Goto Top

Variable enthält nur den letzten Wert

Hallo,

bin hier gerade am verzweifeln.
Ich möchte einen Variable auf das vorkommen eines bestimmten Strings prüfen.
Das klapp soweit, nur enthält die Variable immer das gleiche.

Die Ausgabe zeigt mir das er den SET (Zeile 7) richtig befüllt. Nur enthält die Variable in Zeile 8 wieder den aller letzten Wert.

C:\check_mk>(
SET str=235 Unknown_Attribute       0x0012   099   099   ---    Old_age   Always       -       21  
 echo 241 Total_LBAs_Written      0x0032   099   099   ---    Old_age   Always       -       6044528992   | findstr /i "Always"  1>nul    
 If "9009" == "0" (echo "235 Unknown_Attribute       0x0012   099   099   ---    Old_age   Always       -       21" )   
) 



Code:
@echo on
echo ^<^<^<smart^>^>^>
for /f "delims=# tokens=1,2" %%i in ('smartctl.exe --scan') do (  
	for /f "delims=, tokens=2" %%x in ("%%j") do (  
		if "%%x" == " ATA device" (  
			for /f "tokens=*" %%p in ('smartctl.exe -A %%i') do (  
					SET str=%%p
					echo %str% | findstr /i "Always" > nul  
					If "%errorlevel%"=="0" (  
						echo "%%p"  
					)
				)
			)
		)
	)
)

Hoffe ihr könnte mit trotz Brückentag helfen.

Daniel

Content-Key: 305546

Url: https://administrator.de/contentid/305546

Printed on: April 25, 2024 at 10:04 o'clock

Mitglied: 129413
Solution 129413 May 27, 2016 updated at 10:34:37 (UTC)
Goto Top
Typischer Batch Fehler : Stichwort: EnableDelayedExpansion
http://ss64.com/nt/delayedexpansion.html

FOR-Schleife

Also vor die Variable ein
setlocal ENABLEDELAYEDEXPANSION
und die Variable dann anstatt mit Prozentzeichen mit Ausrufezeichen abrufen.
echo !str!
und hinterher wieder ein setlocal DISABLEDELAYEDEXPANSION

Gruß
skybird
Member: Phill93
Phill93 May 27, 2016 at 10:31:08 (UTC)
Goto Top
Hallo skybird,

Vielen Dank das geht jetzt.

Bekomme dafür die Meldung:
Maximale Rekursionstiefe für SETLOCAL erreicht.

Das Script funktioniert nur die Meldung nervt.

Daniel
Mitglied: 129413
Solution 129413 May 27, 2016 at 10:33:38 (UTC)
Goto Top
Zitat von @Phill93:
Bekomme dafür die Meldung:
Maximale Rekursionstiefe für SETLOCAL erreicht.
Siehe:
Batch - setlocal EnableDelayedExpansion - ersetzen von Text, der ein Ausrufezeichen enthält
Member: Phill93
Phill93 May 27, 2016 at 10:41:52 (UTC)
Goto Top
Danke jetzt geht alles