cmd - merkwürdiges Verhalten bei for und set
mehrmals die gleiche Zeile gelesen?
Hallo zusammen!
Ich hab mit folgendem kurzen Abschnitt ein Problem:
Es geht darum eine Datei durchzulesen und festzustellen, ob eine der Zeilen mit dem Inhalt von %line% beginnt.
Ein zusätzliches set zeigt, dass die Datei wohl auch richtig gelesen wird.
Aber: In der if-Abfrage wird zum einen keine Übereinstimmung gefunden und zum anderen wird immer nur die letzte Zeile der Datei zum Vergleich
verwendet (zumindest behauptet das ein weiteres set workstring zwischen dem ersten und dem if).
Ich hoffe ihr könnt mir helfen. Ich sitz jetzt seit einer gefühlten Ewigkeit hier dran und blick echt nicht mehr weiter ...
gruß,
vis
Ich hab mit folgendem kurzen Abschnitt ein Problem:
setlocal enabledelayedexpansion
set line="sometext"
for /f %%c in (meineDatei) do (
set workstring=%%c
if "%workstring:~0,8%"==%line% (
set found2=true
)
)
Es geht darum eine Datei durchzulesen und festzustellen, ob eine der Zeilen mit dem Inhalt von %line% beginnt.
Ein zusätzliches set zeigt, dass die Datei wohl auch richtig gelesen wird.
Aber: In der if-Abfrage wird zum einen keine Übereinstimmung gefunden und zum anderen wird immer nur die letzte Zeile der Datei zum Vergleich
verwendet (zumindest behauptet das ein weiteres set workstring zwischen dem ersten und dem if).
Ich hoffe ihr könnt mir helfen. Ich sitz jetzt seit einer gefühlten Ewigkeit hier dran und blick echt nicht mehr weiter ...
gruß,
vis
Please also mark the comments that contributed to the solution of the article
Content-Key: 129377
Url: https://administrator.de/contentid/129377
Printed on: April 28, 2024 at 12:04 o'clock
3 Comments
Latest comment
Hallo visum-bl und willkommen im Forum.
Das enabledelayedexpansion ist ja schon der richtige Ansatz, nur dann bitte auch an der richtigen Stelle ! statt % nutzen
Grüße
rubberman
Das enabledelayedexpansion ist ja schon der richtige Ansatz, nur dann bitte auch an der richtigen Stelle ! statt % nutzen
setlocal enabledelayedexpansion
set line="sometext"
for /f %%c in (meineDatei) do (
set workstring=%%c
if "!workstring:~0,8!"==%line% (
set found2=true
)
)
rubberman
Hallo visum-bl und willkommen im Forum!
ginge es auch ganz ohne Schleife und "delayedExpansion" ...
Grüße
bastla
Es geht darum eine Datei durchzulesen und festzustellen, ob eine der Zeilen mit dem Inhalt von %line% beginnt.
Nur als Anmerkung: Mitfindstr /b /c:"%line%" "meineDatei">nul && set "found2=true"
Grüße
bastla