ich eine Reihe von Text-Dateien habe jeweils das gleiche in Unterordner eines bestimmten Verzeichnisses mit dem NamenBatch zu bekommen Linien zwischen zwei Strings in mehreren Textdateien in Unterordner
ac.txt Dateien haben die folgende Struktur:
Ich möchte alle diese Zeilen zwischen Strings [Lichter] und [GetEngineData] (einschließlich der Start [Lichter] und Enden [GetEngineData] Zeilen) in einer einzigen Ausgabedatei namens lights.txt mit einem Leerzeichen in zwischen denen aus jeder Textdatei kommen.
I codiert die folgende Partie aber es ist nicht von so weit Erfolg:
@ECHO OFF
for /r %%a in ('find /n "[lights]"^<(ac.txt) ') do set /a start=%%a
for /r %%a in ('find /n "[GeneralEngineData]"^<(ac.txt) ') do set /a end=%%a
(
for /r %%a in ('find /n /v ""^<(ac.txt) ') do (
IF %%a geq %start% IF %%f leq %end% ECHO(%%b
)
)>lights.txt
Sie können 'FOR/R' nicht verwenden, um die Ausgabe eines Befehls zu verarbeiten. Verwenden Sie "FOR/F", um dies zu tun. Ich bin mir nicht sicher, was Sie versuchen, die Dateimaske in Klammern zu setzen. – Squashman
Mögliches Duplikat von [Batch File - Finde zwei Zeilen und kopiere dann alles zwischen diesen Zeilen] (http://stackoverflow.com/questions/33638832/batch-file-find-two-lines-then-copy-everything-between-those (Zeilen) – aschipfl
Sie haben angegeben, dass Ihre Textdateien "alle gleich benannt" sind. Warum suchen Sie also in jeder Datei mit der Erweiterung .txt und nicht nur in der bekannten Datei Dateiname.txt? – Compo