[Batch] Bestimmte Zeile einer Textdatei als Variable speichern?

2 Antworten

Als eine Variable? Meinst du damit, dass du einfach einen Text als Variable in deiner Batch behandeln möchtest, oder soll man das so verstehen, dass diese Textzeile auch ausserhalb der Batch gespeichert wird, damit mit der auch zu einem späteren Zeitpunkt gearbeitet werden kann?

 

Variante 1 (Text als Variable)

Das ist sehr einfach.

Du hast einen bestimmten Text, sagen wir "Hallo, Welt, wie gehts?"

Den möchtest du nun als eine Variable abspeichern. Der Befehl eine Variable zu erstellen und dem ein Wert zuzuweisen heisst "set".

Hier wäre ist nun das Beispiel, bei dem die Variable den Namen "Beispiel" erhält:

set Beispiel="Hallo, Welt, wie gehts?"

Zur Überprüfung ob es diese Variable gibt und welchen Inhalt sie trägt kann man folgendes machen

set Beispiel

Hierbei wird keine Variable erstellt, sondern es wird dir eine Liste ausgegeben, mit den Variablen deren namen mit "Beispiel" anfangen, da es hier nur eine gibt, wird dort also auch nur eine zu sehen sein.

Wenn du diese Variable innerhalb der Batch-Datei woanders verwenden möchtest, dann kannst du sie aufrufen, indem du ihren Namen nennst, eingeschlossen von 2 Prozentzeichen.

 

Folgendes Beispiel würde ein Text ausgeben, der so wie "Hier der Text: Hallo, Welt, wie gehts?" aussehen würde.

echo Hier der Text: %Beispiel%

 

Das war nun die erste Variante, sie ist sehr einfach, auch wenn ich doch sehr viel geschrieben habe? Aber da ich angenommen habe, dass du scheinbar Neuling bist, habe ich mal etwas ausführlicher geschrieben :)

 


 

Die zweite Variante ist eigentlich so gesagt nicht schwieriger.

Wenn du den obigen Text einfach in eine externe Datei abspeichern willst, dann musst du einfach den echo-Befehl benutzen im Zusammenhang mit dem Zeichen ">" damit die Batch weiss, dass du den Befehl auslagern möchtest. Direkt hinter diese spitze Klammer kommt aber zuvor noch der Dateiname "neueDatei.txt" in den der Text gespeichert werden soll. Das würde in unserem Beispiel so aussehen:

 

echo>neueDatei.txt Hallo, Welt, wie gehts?

Wenn du nun mehr als nur eine Zeile in der Datei benötigst, dann kannst du weitere Zeilen anfügen indem du einfach zwei ">" benutzt.

echo>neueDatei.txt Hallo, Welt, wie gehts?

echo>>neueDatei.txt Dies hier ist die zweite Zeile.

 

Wenn du allerdings den Text aus der Datei wieder in eine Variable speicher musst, dann gehe so vor:

set /p =< neueDatei.txt

Das ist denke ich mal relativ selbsterklärend, das "/p" bedeutet eigentlich, dass die Batch darauf warten wird bis der Benutzer  von Hand ein Text eingibt, der dann in die Variable gespeichert wird, durch das "<" allerdings wurde das schon automatisch ausgeführt.

 

Ich hoffe ich habe alles so erklärt, dass es doch möglichst verständlich war und trotzdem nicht zu kompliziert. Zumal ich überhaupt hoffe, dass ich deine Frage richtig verstanden habe.

 

Na dann viel Spass noch :)

AntiBugs 
Fragesteller
 19.04.2011, 13:59

Danke für die ausführliche Antwort ! Aber das weiß ich schon - ich möchte wissen wie man eine bestimmte Zeile einer Textdatei als Variable speichert. Wenn ich versuche den mehrzeiligen Inhalt einer Textdatei als Variable zu speichern passiert gar nichts.

0

Hallo,

DOS respektive die Kommandozeile bringt dazu mit FOR ein sehr nützliches Werkzeug mit, bitte lies dazu mal bei www.axel-hahn.de nach.

Ein Lösungsansatz für Deine Frage wäre:

for /F "usebackq" %%a in (type textdatei ^|find "Sequenz") do set Fundstelle=%%a

Bitte beachte, dass die Zeile (wegen der doppelten %%) nur innerhalb eines Batches funktioniert. Das Pipe-Zeichen | muss unbedingt mit nem ^Hütchen escaped werden.

Viel Erfolg! Waschtrommel