Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Batch Datei programmieren



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.

YoshiGreen
13.09.2014, 13:23
Ayo,
Besteht das Problem noch? Darf ich nochmal nachfragen?

Wie ich es verstehe:

Du hast eine Text-Datei in der du nach nem String suchst.
Wenn eine Zeile X diesen String enthält, dann
prüfe ob Zeile X+5 = Zeile X+15
falls ja: Lösche Zeile X+9 bis X+13

Da ich nicht für Windows skripte ist es etwas schwierig das genaue Problem zu erkennen. Ich frage mich aktuell 2 Dinge:
Kann ich in ner .bat direkt die n-te Zeile aus ner Datei lesen (Ich fürchte das ist nicht so einfach… http://stackoverflow.com/a/2701917/1063730) sowie:
Kkann ich gezielt Zeilen löschen und die modifizierte Datei abspeichern (Noch nicht nachgeschaut aber I've got a bad feeling about this)

Wenn's noch iwie aktuell ist wäre es jut mal n Minimalbeispiel zu posten :)

one-cool
13.09.2014, 15:23
Hab es mit Python gelöst ;)

RPG-Man
13.09.2014, 16:38
Hab es mit Python gelöst ;)

Das nenn ich mal eine stilvolle Lösung.^^

one-cool
14.09.2014, 09:19
Konnte zwar kein Python vorher, aber mit meinen C++ Kenntnissen ging das dann eigentlich ziemlich schnell, sich das neue anzugewöhnen.

YoshiGreen
14.09.2014, 15:06
Mein erster Gedanke war: Warum schreibt er kein Python-Skript? :D