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-Key: 266566

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

Printed on: April 24, 2024 at 01:04 o'clock

Mitglied: 116301
Solution 116301 Mar 17, 2015, updated at Mar 18, 2015 at 07:19:57 (UTC)
Goto Top
Hallo mavericklp!

In etwa so:
set /a Counter=0

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

echo %Counter%
Grüße Dieter
Member: Biber
Solution Biber Mar 17, 2015, updated at Mar 18, 2015 at 07:19:55 (UTC)
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