CMD for Befehl gibt mir nicht das erwünschte Resultat
Hallo
Ich habe eine Datei Text.txt mit mehreren Einträgen (Pfade mit Ordnernamen, generiert durch einen dir-Befehl), wobei in den Zeilen ein oder mehrere Space vorkommen können (Bsp.)
Ich bin Zeile eins
Ich bin Zeile zwei
Ich bin Zeile drei
...
Ziel: Ich wünsche in einer Variablen nur den Eintrag der gesamten ersten Zeile
Meine Versuche mit for /f ergeben entweder
- 3 X Ich for /f %%a IN ('more/e +0 ^<C:\batchfiles\text.txt') do ECHO %%a
- alle drei Zeilen for /f "tokens=*" %%a IN ('more/e +0 ^<C:\batchfiles\text.txt') do ECHO %%a
- alle drei Zeilen for /f "tokens=* delims= " %%a IN (C:\batchfiles\text.txt) do ECHO %%a
- alle drei Zeilen for /f "tokens=* delims=^J" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Line Feed)
- alle drei Zeilen for /f "tokens=* delims=^M" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Carriage Return)
- alle drei Zeilen for /f "tokens=* delims=\" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Zeilenumbruch)
Eigentlich möchte ich für delims CR oder LF einsetzen, weil die Anzahl Space unbekannt ist. DOS kennt aber den Befehl CHR(13) nicht
Kann mir jemand den for Befehl korrigieren oder einen anderen Lösungsweg vorschlagen? Danke.
Ich habe eine Datei Text.txt mit mehreren Einträgen (Pfade mit Ordnernamen, generiert durch einen dir-Befehl), wobei in den Zeilen ein oder mehrere Space vorkommen können (Bsp.)
Ich bin Zeile eins
Ich bin Zeile zwei
Ich bin Zeile drei
...
Ziel: Ich wünsche in einer Variablen nur den Eintrag der gesamten ersten Zeile
Meine Versuche mit for /f ergeben entweder
- 3 X Ich for /f %%a IN ('more/e +0 ^<C:\batchfiles\text.txt') do ECHO %%a
- alle drei Zeilen for /f "tokens=*" %%a IN ('more/e +0 ^<C:\batchfiles\text.txt') do ECHO %%a
- alle drei Zeilen for /f "tokens=* delims= " %%a IN (C:\batchfiles\text.txt) do ECHO %%a
- alle drei Zeilen for /f "tokens=* delims=^J" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Line Feed)
- alle drei Zeilen for /f "tokens=* delims=^M" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Carriage Return)
- alle drei Zeilen for /f "tokens=* delims=\" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Zeilenumbruch)
Eigentlich möchte ich für delims CR oder LF einsetzen, weil die Anzahl Space unbekannt ist. DOS kennt aber den Befehl CHR(13) nicht
Kann mir jemand den for Befehl korrigieren oder einen anderen Lösungsweg vorschlagen? Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 642007
Url: https://administrator.de/contentid/642007
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
10 Kommentare
Neuester Kommentar
Moin
Und was ist der "Tiefere Sinn" dahinter? Ich denke du wirst die Variable dann irgendwie weiter verwenden wollen. Die Frage ist wofür. Manchmal gibt es in Powershell Funktionen die man versucht in Batch umständlich zu erzeugen. Was ist das Ziel des großen ganzen?
Gruß
Doskias
Und was ist der "Tiefere Sinn" dahinter? Ich denke du wirst die Variable dann irgendwie weiter verwenden wollen. Die Frage ist wofür. Manchmal gibt es in Powershell Funktionen die man versucht in Batch umständlich zu erzeugen. Was ist das Ziel des großen ganzen?
Gruß
Doskias
Ziel: Ich wünsche in einer Variablen nur den Eintrag der gesamten ersten Zeile
Na dann, Kinderspiel:@echo off
set "zeile1="
for /f "usebackq delims=" %%a in ("C:\batchfiles\text.txt") do (if not defined zeile1 set "zeile1=%%a")
echo %zeile1%
Wo is nu das Problem? Der Code in meinem obigen Post funktioniert problemlos ...
Zitat von @Berner:
Dass man usebackq im For-Befehl einsetzen kann habe ich im Netz gesehen, konnte aber nirgends dessen Nutzen finden.
Dass man usebackq im For-Befehl einsetzen kann habe ich im Netz gesehen, konnte aber nirgends dessen Nutzen finden.
Einfach
for /?
in die Konsole eintippen und schon kannst du es nachlesen..Kurz du kannst damit normale Anführungszeichen für die Pfadangabe im For Loop verwenden. Vor allem dafür gedacht wenn Leerzeichen im Pfad sind.
Hallo,
https://ss64.com/nt/for_cmd.html
https://de.wikipedia.org/wiki/FOR_(Kommandozeilenbefehl)#Iteration_durch ...
Gruß,
Peter
Zitat von @Berner:
Dass man usebackq im For-Befehl einsetzen kann habe ich im Netz gesehen, konnte aber nirgends dessen Nutzen finden. Ohne Deine Hilfe würde ich jetzt noch im Netz nach Lösungen suchen.
In ein Kommandozeilenfenster mal ein For /? eingetippelt. Dort ist dein Usebackq erläutert. Auch hier zu Lesen hilft...Dass man usebackq im For-Befehl einsetzen kann habe ich im Netz gesehen, konnte aber nirgends dessen Nutzen finden. Ohne Deine Hilfe würde ich jetzt noch im Netz nach Lösungen suchen.
https://ss64.com/nt/for_cmd.html
https://de.wikipedia.org/wiki/FOR_(Kommandozeilenbefehl)#Iteration_durch ...
Gruß,
Peter