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
Hallo zusammen!
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129377
Url: https://administrator.de/forum/cmd-merkwuerdiges-verhalten-bei-for-und-set-129377.html
Ausgedruckt am: 06.04.2025 um 10:04 Uhr
3 Kommentare
Neuester Kommentar
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