Entfernen multi-line-strings aus einer Textdatei per batch-Skript

Ich versuche eine batch Datei erstellen, das Bearbeiten einer text-Datei zu entfernen, Zeilen mit einem bestimmten string und entfernen Sie die Zeile direkt danach.
Ein Beispiel für diese Datei würde wie folgt Aussehen:

LINE ENTRY KEEP_1 BLA BLA 
ENDE 
LINE ENTRY REMOVE_1 FOO BAR 
ENDE 
LINE ENTRY REMOVE_2 HALLO WELT 
ENDE 
LINE ENTRY KEEP_2 KATZE HUND 
ENDE 

Nach dem ausführen der batch-script benötige ich die neue Datei enthalten

LINE ENTRY KEEP_1 BLA BLA 
ENDE 
LINE ENTRY KEEP_2 KATZE HUND 
ENDE 

wo jede Zeile mit REMOVE_ gelöscht wurde, sowie den entsprechenden "ENDE" - Zeile.

Habe ich versucht mit der Technik gefunden hier entfernen Sie die Zeilen, die den string aber es scheint nicht möglich zu sein, gehören Zeichen wie \r\n zu prüfen und umfassen das 'ENDE' in die Suche ein. Ich kann dies nicht als 2 seperate FINDSTR-Befehle, wie ich immer noch das 'ENDE' text gehalten werden, für die beiden anderen Einträge.

Mit findstr /v REMOVE_ lässt mich mit den folgenden:

LINE ENTRY KEEP_1 BLA BLA 
ENDE 
ENDE 
ENDE 
LINE ENTRY KEEP_2 KATZE HUND 
ENDE 

und mit findstr /v "REMOVE_*\r\nEnd" scheint nicht, überhaupt zu arbeiten.
Nur um zu bestätigen, jede Zeile ist definitiv beendet mit \r\n.

Jede Hilfe zu diesem Thema würde sehr geschätzt werden.

  • Sind Sie absolut gezwungen, an einem batch-Skript? Könnten Sie verwenden, awk, zum Beispiel?
  • Ich bin nicht beschränkt auf die batch, aber diese Datei kann ausgeführt werden müssen, die auf eine Reihe von verschiedenen Maschinen, so würde ich mag zu halten Abhängigkeiten auf ein minimum, wenn möglich. Im Idealfall entweder batch oder VBS, denke ich.
  • In diesem Fall würde ich vorschlagen, VBS, da Sie wahrscheinlich weniger sorgen, dass Weg. Ich bin mir nicht ganz sicher, es kann nicht getan werden zuverlässig aber ich glaube den Kampf mit solchen Dingen mich von Zeit zu Zeit und finde nicht eine gute Allgemeine Lösung.
InformationsquelleAutor Robert Davey | 2010-07-19
Schreibe einen Kommentar