-eraz-
Goto Top

Wie Text Zeilenweise per Batch aus txt auslesen...?

Hallo Leute!

ich habe schon das Forum durchsucht aber irgendwie nicht das gefunden was ich brauche. Ich möchte mit einer Schleife Zeilenweise Text (Computernamen) auslesen und diese dann als Variable setzen damit ich damit arbeiten kann. Bisher habe ich folgendes versucht:
FOR /F "skip=2 delims=" %%i IN (clients.txt) DO set client=%%i  
das funktioniert zwar schonmal garnicht so schlecht, allerdings rattert die schleife bis zur letzten zeile durch und setzt mir den letzten wert dann als variable. Ich brauch aber zuerst die erste Zeile, dann möchte ich einen Befehl ausführen und wenn er den beendet hat soll er die zweite Zeile auslesen usw. Wie gehts richtig...?

Content-Key: 75303

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

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

Member: bastla
bastla Dec 05, 2007 at 16:32:28 (UTC)
Goto Top
Hallo -eraz- und willkommen im Forum!

Je nachdem, was Du alles vorhast, wird es vermutlich sinnvoll sein, ein Unterprogramm einzusetzen - etwa so:
FOR /F "skip=2 delims=" %%i IN (clients.txt) DO call :ProcessClient "%%i"  
goto :eof

:ProcessClient
echo Client %~1 wird bearbeitet
...
...
goto :eof
Dieses Unterprogramm verhält sich im Prinzip wie ein neuer Batch, der mit dem Parameter "Client" aufgerufen wurde. Der Parameter wird dabei mit %1 (oder %~1, um die beim Aufruf zur Sicherheit gesetzten umgebenden Anführungszeichen zu entfernen) angesprochen.

Das Unterprogramm wird mit "goto :eof" beendet, was einem "Return" (zur aufrufenden Schleife) entspricht. Wenn (wie in meinem Beispiel) unterhalb des Unterprogramms kein weiterer Programmcode folgt, kannst Du dieses "gotoi :eof" auch weglassen.

Das "goto :eof" im Hauptprogramm beendet dann den Batch, damit das Unterprogramm nicht unbeabsichtigt nach dem Ende der Schleife nochmals durchlaufen wird.

Grüße
bastla
Member: -eraz-
-eraz- Dec 06, 2007 at 07:25:18 (UTC)
Goto Top
Wow, funktioniert total gut! Danke! face-smile

Eine Kleinigkeit gäb's vielleicht noch... Kann man das auch irgendwie so machen das man nicht jedes mal Enter drücken muss damit die schleife zum nächsten Clients springt? Also das es halt einfach durchläuft...?

/edit
Sorry war mein Fehler... hab nur zum testen ne pause eingebaut... *gg* Danke nochmal!! face-smile