crazyhoesl
Goto Top

String mit variabler Länge auslesen

Hallo Ihr Lieben,

ich stehe vor folgendem Problem:

Ich möchte einen String aus einer Datei einen auslesen, der in Anführungszeichen steht. Also z.B.

Heute ist "Marion" dran  

Das >Heute ist< ist immer da, der Name/String ändert sich allerdings immer in Inhalt und Länge.

Und das >Marion< hätte ich gerne als Variable in einer Batch.


So nun weiß ich dass hier mir jemand wahrscheinlich eine Lösung mit tokens und delims aufzeigt - sofern mein Problem überhaupt lösbar ist - ich bitte aber auch um Erklärung, weil ich diese for /f - Schleifen und tokens und delims einfach nicht in meinen Schädel bringen will wie das funktioniert.

Besten Dank!

Content-Key: 86134

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

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

Mitglied: 54487
54487 Apr 22, 2008 at 15:11:03 (UTC)
Goto Top
ich bitte aber auch um Erklärung, weil ich diese for /f - Schleifen und tokens und delims
einfach nicht in meinen Schädel bringen will wie das funktioniert.

Dazu druckst du dir Text in der Windows-Hilfe zum Suchbegriff "for" am besten einmal aus und liest das in eine ruhigen Stunde mal durch. Eigentlich ist das ganz gut erklärt.

Ausprobieren an selbst erzeugten Textdateien mit selbst zusammengefummelten Befehlszeilen ist m. E. immer noch der sicherste Weg zum Verständnis.
Member: bastla
bastla Apr 22, 2008 at 19:05:31 (UTC)
Goto Top
Hallo crazyhoesl!

Dem Vorschlag von nachdenker schließe ich mich an ...

Zu diesem konkreten Fall kann ich Dich aber schon mal etwas beruhigen: es geht auch ohne die Angabe von "delims" face-wink - dies allerdings nur, wenn zwischen den Anführungszeichen tatsächlich immer nur ein Wort steht, da in diesem Fall das defaultmäßige Trennzeichen (engl. "delimiter") "Leerzeichen" verwendet werden kann:
for /f "tokens=3" %%i in (Datei.txt) do set "Name=%%~i"  
Aufgrund der Trennung durch Leerzeichen ist der gesuchte String der 3. Bestandteil ("token") der Zeile, und dieser steht zunächst als %%i zur Verfügung. Allerdings enthält diese Variable auch noch die umschließenden Anführungszeichen, welche durch die Schreibweise %%~i entfernt werden.

Grüße
bastla
Member: Biber
Biber Apr 23, 2008 at 10:48:06 (UTC)
Goto Top
sollte die Anforderung allerdings irgendwann dahingehend geändert werden,
dass wirklich ein "String in Anführungszeichen" an beliebiger Position innerhalb einer Zeile gesucht werden soll,
dann ist es lesbarer, als DELIMS etwas anders als Anführungszeichen zu verwenden.
Beispiel (nur am CMD-Prompt):
>set "line=Heute ist "Klaus Maria" dran."  
>set line
line=Heute ist "Klaus Maria" dran.  
>FOR /F "delims=§ tokens=2" %i in ("%line:"=§%") do @echo Name: [%i]  
Name: [Klaus Maria]

Wenn diese (eine) Zeile aus einer Datei gelesen werden soll, dann muss vorher %line% gesetzt werden mit
>FOR /F "delims=" %i in (DranIs.txt) do set "line=%i"  
-oder-
Set /P line=<DranIs.txt

Grüße
Biber