one-cool
08.07.2014, 14:50
Ich will in einer Batch Datei einen gewissen String suchen und dann den Wert 5 Zeilen weiter mit dem Wert 15 Zeilen weiter vergleichen.
Sieht derzeit an der Stelle so aus:
@echo off
REM Suche nach dem wort testwort in der Datei test.txt
REM Auslesen und Ziel-Datei
SET "quell_datei=U:\Dateisortierung\test\test.txt"
SET "ziel_datei=U:\Dateisortierung\test\testergebnis.txt"
SET "suchen_nach=testwort"
REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :vergleich !zeile!
)
GOTO :weiter
:vergleich
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
If zeile=!zeile:%suchen_nach% CALL :zeilenvergleich
:zeilenvergleich
If "%1"=="%2" echo %1 and %2 are identical
Ich vermute, dass es soweit zumindest nicht falsch ist.
Bei Zeilenvergleich:
Hier weiss ich nicht, wie ich dann den Wert vergleichen kann? Stehe nun in einer Zeile und wie mache ich das nun, dass er die beiden gesuchten Werte (5 Zeilen und 15 Zeilen nach der von mir gefundenen Zeile) mir vergleicht?
im Anschluss soll er dann die Zeilen 9-13 löschen, wenn der Wert identisch ist.
Sieht derzeit an der Stelle so aus:
@echo off
REM Suche nach dem wort testwort in der Datei test.txt
REM Auslesen und Ziel-Datei
SET "quell_datei=U:\Dateisortierung\test\test.txt"
SET "ziel_datei=U:\Dateisortierung\test\testergebnis.txt"
SET "suchen_nach=testwort"
REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :vergleich !zeile!
)
GOTO :weiter
:vergleich
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch" ersetzen
If zeile=!zeile:%suchen_nach% CALL :zeilenvergleich
:zeilenvergleich
If "%1"=="%2" echo %1 and %2 are identical
Ich vermute, dass es soweit zumindest nicht falsch ist.
Bei Zeilenvergleich:
Hier weiss ich nicht, wie ich dann den Wert vergleichen kann? Stehe nun in einer Zeile und wie mache ich das nun, dass er die beiden gesuchten Werte (5 Zeilen und 15 Zeilen nach der von mir gefundenen Zeile) mir vergleicht?
im Anschluss soll er dann die Zeilen 9-13 löschen, wenn der Wert identisch ist.