anmelder
Goto Top

Reguläre Ausdrücke in FINDSTR

Hallo,

mit
FINDSTR /V /R "\<REM\>" "quelle.bat" >"ziel.bat"  
kann ich alle REM Befehle aus einer Batch entfernen.

An einigen Stellen muß der Befehl aber unverändert bleiben, z.B. wird er mit ECHO> in eine andere Datei geschrieben. An dieser Stelle findet sich vor dem REM ein Dachzeichen, also ^REM.
Dafür würde ich eigentlich
FINDSTR /V /R "\<^REM\>" "quelle.bat" >"ziel.bat"  
nehmen, dann wird aber offenbar gar nichts verändert.

Wie lautet der Befehl damit alle Kommentare aus der Datei entfernt werden außer bei denen:
a) eine unbekannte Menge Leerzeichen vor dem Befehl steht
oder
b) die Zeichenfolge ^REM verwendet wird

Grüße

Content-Key: 1111199946

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

Printed on: April 16, 2024 at 05:04 o'clock

Mitglied: 149062
149062 Aug 01, 2021 updated at 13:35:29 (UTC)
Goto Top
>"ziel.bat" (findstr /vrc:"^[^ ]*REM" "quelle.bat" | findstr /vrc:"^[ ]*\^REM")

Wieso immer noch Batch? Powershell bietet viel bessere Regex Unterstützung....
Member: anmelder
anmelder Aug 01, 2021 at 14:55:45 (UTC)
Goto Top
Das Programm ist zu groß um jetzt noch wegen einer Zeile mit Powershell anzufangen. Wenn das mit Batch lösbar ist möchte ich es mit Batch machen.

Gegeben ist folgende Beispieldatei:

echo nicht löschen
REM löschen
^REM nicht löschen
echo text ^REM nicht löschen
                      REM löschen

Mit deinem Code bekomme ich folgende Ausgabe:
echo nicht löschen
echo text ^REM nicht löschen
                      REM löschen

Richtig wäre aber:
echo nicht löschen

^REM nicht löschen
echo text ^REM nicht löschen
Mitglied: 149062
Solution 149062 Aug 01, 2021 updated at 15:13:45 (UTC)
Goto Top
Ach so war das von dir gemeint, na dann reicht ja
>"ziel.bat" (findstr /vrc:"^[ ]*REM" "quelle.bat")  
Das Programm ist zu groß um jetzt noch wegen einer Zeile mit Powershell anzufangen
Problemlos als Einzeiler in die Batch nutzbar face-wink
powershell -EP Bypass -C "gc 'D:\quelle.bat | ?{$_ -notmatch '^\s*REM'}' | sc 'D:\ziel.bat' -Encoding Default"
Member: anmelder
anmelder Aug 01, 2021 at 15:17:27 (UTC)
Goto Top
Läuft. Danke