mavericklp
Goto Top

In Batch Zählen

Guten Morgen zusammen,

Ich habe ein kleines Problem mit einer Zählschleifer in der Batch Datei. Und zwar werden die beiden Variablen nicht hochgezählt.

Hintergrund ist, in der Textdatei %TXTVar%.txt steht eine liste von Computer Namen. Diese Sollen der reihe nach angepingt werde. Wenn der Computer erreichbar ist, soll eine Aktion ausgeführt werden. In diesem Fall soll etwas in die Registry geschreiben werden. Bishierhin funktioniert alles. Jetzt will ich jedoch die Ping ausgabe unterdrücken und Staddessen soll angezeigt werden, wie weit der Script schon gekommen ist. Da wir für diese Aktion eine Liste von knapp 180 Computern haben.

Zum hochzählen habe ich verschiedene Methoden schon versucht:

set /a Counter=%Counter%+1
set /a Counter+=1
set Counter=%Counter%+1
set Counter+=1

Set Computer=0
Set Counter=0

if exist %TXTVar%.txt (
	echo --------------------------------------------------------------------- >>auswertung.txt
	echo ODBC Ändern am %DATE% für Liste %TXTVar% >>auswertung.txt
	echo --------------------------------------------------------------------- >>auswertung.txt
	echo. >>auswertung.txt
	
	rem Computer Zählen
	FOR /F "delims=:" %%A IN ('findstr /N .* "%TXTVar%.txt"') DO set /a Computer=%Computer%1  
	echo %Computer% Computer gefunden.
	echo.
	for /F %%a in (%TXTVar%.txt) do (
		Rem durchläufe zählen
		SET /a Counter=%Counter%+1
		echo %%a %TIME% >> auswertung.txt
		ping %%a -n 2 -w 500 >nul
		if errorlevel 1 (
			echo Computer nicht erreichbar. >> auswertung.txt
		) else (
			echo Computer erreichbar. >> auswertung.txt
			reg add ... /f >> auswertung.txt
		)		
		echo. >> auswertung.txt
		echo %Counter%
	)
) else ( echo Die Datei "%TXTVar%.txt" existiert nicht.)  
GOTO Ende

Content-ID: 266566

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

Ausgedruckt am: 23.11.2024 um 01:11 Uhr

116301
Lösung 116301 17.03.2015, aktualisiert am 18.03.2015 um 08:19:57 Uhr
Goto Top
Hallo mavericklp!

In etwa so:
set /a Counter=0

::For...(
    set /a Counter+=1
::)

echo %Counter%
Grüße Dieter
Biber
Lösung Biber 17.03.2015, aktualisiert am 18.03.2015 um 08:19:55 Uhr
Goto Top
Moin MaverichIP,

zusätzlich muss du noch, wenn du die Variable %counter% innerhalb der FOR-Anweisung bei jedem Durchlauf ausgeben lassen willst,
  • am Anfang des Batches kundtun, dass du mit "Verzögerter Variablenauflösung" arbeiten willst (Setlocal EnableDelayedExpansion)
  • den Befehl echo %counter% ändern in echo !counter!.

Beispiele und Erläuterung findest du mit der Forumssuche unter "setlocal EnableDelayedExpansion" mehrere.

Grüße
Biber