Variable innerhalb einer forschleife setzen nicht möglich ?
Ich weiss ja nicht wie blöd ich bin, aber ich verzweifle mittlerweile.
Ich habe hier soviel beispiele gefunden und alle mindestens 2x durchprobiert, nur funktionieren die hier nicht.
Zuletzt habe ich diesen Tipp probiert : Set-Befehl innerhalb einer Schleife funktioniert nicht wie erwartet
Ich brauche das um später mit PSINFO nach einer Software zu scannen ... oder ich darf rennen rennen rennen rennen ....
Folgendes Script will nicht so wie es es möchte :
In der Datei rechner.txt ist pro zeile ein Hostname
Ich brauche die neuen Dateien um sicherzustellen alle mal erfasst zu haben, die die gerade offline sind dann eben beim nächsten mal ...
Lobiwan
Ich habe hier soviel beispiele gefunden und alle mindestens 2x durchprobiert, nur funktionieren die hier nicht.
Zuletzt habe ich diesen Tipp probiert : Set-Befehl innerhalb einer Schleife funktioniert nicht wie erwartet
Ich brauche das um später mit PSINFO nach einer Software zu scannen ... oder ich darf rennen rennen rennen rennen ....
Folgendes Script will nicht so wie es es möchte :
In der Datei rechner.txt ist pro zeile ein Hostname
Ich brauche die neuen Dateien um sicherzustellen alle mal erfasst zu haben, die die gerade offline sind dann eben beim nächsten mal ...
@ECHO ON
setlocal disabledelayedexpansion
:: setlocal ensabledelayedexpansion
For /F "tokens=1" %%i in (rechner.txt) do (
SET "PCONLINE=0"
ping -n 1 %%i | find "TTL=" && SET "PCONLINE=1"
IF "%PCONLINE%"=="1" (
ECHO %%i>>online.txt
) ELSE (
ECHO %%i>>offline.txt
)
)
Lobiwan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 112890
Url: https://administrator.de/contentid/112890
Ausgedruckt am: 05.11.2024 um 12:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo lobiwan!
Nur der Vollständigkeit halber: Wenn Du nur einen Schalter setzen willst, um den Online-Status anzuzeigen, lässt sich das sehr einfach auch innerhalb einer "for"-Schleife realisieren, indem Du auf "DEFINED" abfragst - also (ungetestet) etwa so:
Je nachem, was unter "noch viel mehr" zu verstehen ist, könnte auch das Unterprogramm ":DO_IT" ebenfalls in die Schleife eingefügt werden (anstelle von "CALL:DO_IT %%i") ...
Meine obige Variante ließe sich übrigens auch so verwenden:
Grüße
bastla
Nur der Vollständigkeit halber: Wenn Du nur einen Schalter setzen willst, um den Online-Status anzuzeigen, lässt sich das sehr einfach auch innerhalb einer "for"-Schleife realisieren, indem Du auf "DEFINED" abfragst - also (ungetestet) etwa so:
@ECHO OFF & SETLOCAL
:ANFANG
SET NEUERUNDE=0
IF EXIST offline.txt del offline.txt
IF EXIST online.txt del online.txt
IF NOT EXIST rechner.txt (ECHO Fehler ! rechner.txt nicht gefunden ! & Pause & goto :eof)
FOR /F "tokens=1" %%i IN (rechner.txt) DO (
SET "PCONLINE="
ECHO Check PC : %%i
ping -n 1 %1 | find "TTL=" >NUL && SET "PCONLINE=1"
IF DEFINED PCONLINE (
ECHO %%i>>online.txt
ECHO PC %%%i ist ON
CALL:DO_IT %%i
) ELSE (
ECHO %%i>>offline.txt
ECHO PC %%i ist OFF
)
)
IF EXIST offline.txt (
move offline.txt rechner.txt
SET NEUERUNDE=1
)
IF "%NEUERUNDE%"=="1" GOTO ANFANG
goto :eof
:DO_IT
ECHO PC %1 wird bearbeitet ...
REM DO Irgendwas ;-)
REM Und noch viel mehr ...
GOTO:eof
Meine obige Variante ließe sich übrigens auch so verwenden:
...
for /f "delims=" %%i in (rechner.txt) do @ping -n 1 %%i|find "TTL=">nul && (
ECHO %%i>>online.txt
ECHO PC %%i ist ON
CALL:DO_IT %%i
) || (
ECHO %%i>>offline.txt
ECHO PC %%i ist OFF
)
...
bastla