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:
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 266566
Url: https://administrator.de/contentid/266566
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo mavericklp!
In etwa so:
Grüße Dieter
In etwa so:
set /a Counter=0
::For...(
set /a Counter+=1
::)
echo %Counter%
Moin MaverichIP,
zusätzlich muss du noch, wenn du die Variable %counter% innerhalb der FOR-Anweisung bei jedem Durchlauf ausgeben lassen willst,
Beispiele und Erläuterung findest du mit der Forumssuche unter "setlocal EnableDelayedExpansion" mehrere.
Grüße
Biber
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 inecho !counter!
.
Beispiele und Erläuterung findest du mit der Forumssuche unter "setlocal EnableDelayedExpansion" mehrere.
Grüße
Biber