visum-bl
Goto Top

cmd - merkwürdiges Verhalten bei for und set

mehrmals die gleiche Zeile gelesen?

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

Content-Key: 129377

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

Ausgedruckt am: 28.03.2024 um 09:03 Uhr

Mitglied: rubberman
rubberman 14.11.2009 um 21:03:56 Uhr
Goto Top
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 face-wink
    setlocal enabledelayedexpansion

    set line="sometext"  
    for /f %%c in (meineDatei) do (
      set workstring=%%c
      if "!workstring:~0,8!"==%line% (  
        set found2=true
      )      
    )
Grüße
rubberman
Mitglied: visum-bl
visum-bl 14.11.2009 um 21:23:04 Uhr
Goto Top
Wow, so klappts! Danke vielmals face-wink

Ich kannte das !var! nur im zusammenhang mit variable in variable (!text:%anfang%,%ende%!) .. aber wenn ich drüber nachdenke gibt das Sinn ..
Mitglied: bastla
bastla 14.11.2009 um 21:57:49 Uhr
Goto Top
Hallo visum-bl und willkommen im Forum!
Es geht darum eine Datei durchzulesen und festzustellen, ob eine der Zeilen mit dem Inhalt von %line% beginnt.
Nur als Anmerkung: Mit
findstr /b /c:"%line%" "meineDatei">nul && set "found2=true"
ginge es auch ganz ohne Schleife und "delayedExpansion" ...

Grüße
bastla