per batch Listen abgleichen
Einträge in einer Liste in Abhängigkeit von anderen Listen erweitern.
Ich hoffe dass ich einigermaßen verständlich machen kann was ich tun will.
Also
Ich habe eine liste in der Usernamen und hostIDs aufgefürt sind. (user-rechner.txt)
hans rechner-05
klaus rechner-08
peter rechner-04
fritz rechner-07
Die Rechner in dieser Liste gehören zwei unterschiedlichen subdomains an.
Ich muss nun die Zeilen so erweitern das die jeweilge subdomain in der Zeile erscheint.
Dazu habe ich zwei listen in der die Rechner der jeweiligen subdomain aufgeführt sind.
Mein Idee ist hier mit for Schleifen meine user-rechner.txt Liste durchzugehen und mit "find" meine subdomain Listen zu durchsuchen.
Wird der Rechner in keiner der subdomain Listen gefunden soll das in einer Fehler Liste aufgeführt werden, oder besser noch es wird eine weitere batch gestartet, die ermittelt zu welcher Subdomain der Rechner gehöhrt.
Als Ergebniss sollte ich einen neue Liste user-rechner2.txt bekommen.
hans rechner-05 subdomain-1
klaus rechner-08 subdomain-2
peter rechner-04 subdomain-2
fritz rechner-07 subdomain-1
Meine bisherigen Bemühungen sehen so aus.
echo on
for /f "tokens=1,2 delims= " %%i in (user-rechner.txt) do (
find "%%j" subdomain-1.txt
if %errorlevel% == 0 echo %%i %%j subdomain-1 >>user-rechner2.txt
if %errorlevel% == 1 find "%%j" subdomain-2.txt
if %errorlevel% == 0 echo %%i %%j subdomain-2 >>user-rechner2.txt
if %errorlevel% == 1 echo %%j nicht gefunden >>fehler-liste.txt
)
pause
Leider funktioniert das mit den Errorleveln nicht so einfach wie ich mir das gedacht habe.
kann mir jemand weiterhelfen ?
Gruß
didie08
Ich hoffe dass ich einigermaßen verständlich machen kann was ich tun will.
Also
Ich habe eine liste in der Usernamen und hostIDs aufgefürt sind. (user-rechner.txt)
hans rechner-05
klaus rechner-08
peter rechner-04
fritz rechner-07
Die Rechner in dieser Liste gehören zwei unterschiedlichen subdomains an.
Ich muss nun die Zeilen so erweitern das die jeweilge subdomain in der Zeile erscheint.
Dazu habe ich zwei listen in der die Rechner der jeweiligen subdomain aufgeführt sind.
Mein Idee ist hier mit for Schleifen meine user-rechner.txt Liste durchzugehen und mit "find" meine subdomain Listen zu durchsuchen.
Wird der Rechner in keiner der subdomain Listen gefunden soll das in einer Fehler Liste aufgeführt werden, oder besser noch es wird eine weitere batch gestartet, die ermittelt zu welcher Subdomain der Rechner gehöhrt.
Als Ergebniss sollte ich einen neue Liste user-rechner2.txt bekommen.
hans rechner-05 subdomain-1
klaus rechner-08 subdomain-2
peter rechner-04 subdomain-2
fritz rechner-07 subdomain-1
Meine bisherigen Bemühungen sehen so aus.
echo on
for /f "tokens=1,2 delims= " %%i in (user-rechner.txt) do (
find "%%j" subdomain-1.txt
if %errorlevel% == 0 echo %%i %%j subdomain-1 >>user-rechner2.txt
if %errorlevel% == 1 find "%%j" subdomain-2.txt
if %errorlevel% == 0 echo %%i %%j subdomain-2 >>user-rechner2.txt
if %errorlevel% == 1 echo %%j nicht gefunden >>fehler-liste.txt
)
pause
Leider funktioniert das mit den Errorleveln nicht so einfach wie ich mir das gedacht habe.
kann mir jemand weiterhelfen ?
Gruß
didie08
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 88419
Url: https://administrator.de/forum/per-batch-listen-abgleichen-88419.html
Ausgedruckt am: 23.12.2024 um 12:12 Uhr
2 Kommentare
Neuester Kommentar
Moin didie08,
die Errorlevel-Prüfung geht in die Grütze, weil Du sie bezogen auf die Variable %ErrorLevel% ausführst... und der Wert dieser Variablen wird von der CMD.exe ein einziges Mal ermittelt - wenn die FOR/F-Anweisung gelesen wird. Die Zeile hört zwa optisch erst 6 Zeilen tiefer auf, aber ist für die CMD.exe dennoch eine Anweisung.
Du kannst es z.B. so umgehen.
[ungetestet, wie hier im Board üblich]
Und Du solltest immer den höheren ErrorLevel-Wert zuerst prüfen.
Denn "ErrorLevel 0" ist auch WAHR, wenn Errorlevel Größer 0 ist.
Grüße
Biber
die Errorlevel-Prüfung geht in die Grütze, weil Du sie bezogen auf die Variable %ErrorLevel% ausführst... und der Wert dieser Variablen wird von der CMD.exe ein einziges Mal ermittelt - wenn die FOR/F-Anweisung gelesen wird. Die Zeile hört zwa optisch erst 6 Zeilen tiefer auf, aber ist für die CMD.exe dennoch eine Anweisung.
Du kannst es z.B. so umgehen.
for /f "tokens=1,2 delims= " %%i in (user-rechner.txt) do (
find "%%j" subdomain-1.txt
if errorlevel 1 (
find "%%j" subdomain-2.txt
IF errorlevel 1 (
echo %%j nicht gefunden >>fehler-liste.txt
) ELSE (
echo %%i %%j subdomain-2 >>user-rechner2.txt
)
) ELSE (
echo %%i %%j subdomain-1 >>user-rechner2.txt
)
)
Und Du solltest immer den höheren ErrorLevel-Wert zuerst prüfen.
Denn "ErrorLevel 0" ist auch WAHR, wenn Errorlevel Größer 0 ist.
Grüße
Biber