Hallo zusammen,
ich habe eine Batch-Datei geschrieben, die mir eine Textdatei reduziert. Alle erforderlichen Dinge werden hier erfolgreich umgesetzt, bei einer Sache stolpere ich jedoch noch.
Es KANN sein, dass die Textdatei in einer oder mehreren Zeilen die Zeichenfolge ARF und/oder AR enthält. Ich möchte gerne diese Zeilen finden und löschen. Auf der Konsole kann ich die Zeilen mit "find" finden, ich weiß sie aber nicht in meiner Batch-Datei zu verarbeiten. Kann mir da wer helfen?
Vielen Dank!
ich habe eine Batch-Datei geschrieben, die mir eine Textdatei reduziert. Alle erforderlichen Dinge werden hier erfolgreich umgesetzt, bei einer Sache stolpere ich jedoch noch.
Es KANN sein, dass die Textdatei in einer oder mehreren Zeilen die Zeichenfolge ARF und/oder AR enthält. Ich möchte gerne diese Zeilen finden und löschen. Auf der Konsole kann ich die Zeilen mit "find" finden, ich weiß sie aber nicht in meiner Batch-Datei zu verarbeiten. Kann mir da wer helfen?
Vielen Dank!
Code:
REM Deaktivierung von Outputs
@echo off
REM Leeren des Screens
cls
REM Zur verzögerten Übersetzung von Variablen.
REM Bewirkt, dass die Variable nicht zur Kompilierzeit sondern erst zur Laufzeit übersetzt wird
REM (setzt die Verwendung von SETLOCAL zur Aktivierung von verzögerter Übersetzung voraus)
setlocal enabledelayedexpansion
REM Definiert die Eingabe- und Ausgabedatei
set "Quelldatei=input.txt"
set "Zieldatei=output.txt"
REM Definiert die zu löschenden Satzzeichen
SET "suchen_nach1= -"
SET "ersetzen_durch1= "
REM Löscht den Inhalt der Ausgabedatei, sofern eine existiert
IF EXIST %Zieldatei% (DEL /f %Zieldatei% 1>NUL 2>NUL)
REM Quell-Datei zeilenweise auslesen
REM und in Variable "zeile" schreiben
FOR /f "delims=" %%i IN ('FINDSTR . "%Quelldatei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :weiter
:ersetzen
REM innerhalb der Variable "zeile"
REM den Inhalt der Variable "suchen_nach1" suchen
REM und diese durch den Inhalt der Variable "ersetzen_durch1" ersetzen
SET zeile=!zeile:%suchen_nach1%=%ersetzen_durch1%!
REM Inhalt der Variable "zeile" in die Ausgabedatei schreiben
IF [!zeile!] EQU [] (ECHO.>>%Zieldatei%) ELSE (ECHO !zeile!>>%Zieldatei%)
GOTO :eof
REM Weitere Verarbeitung bis zur letzten Zeile
:weiter
REM Löschen der ersten Zeile in der Zieldatei
for %%a in ("%Zieldatei%") DO (
more /e +1 "%%a">"%%a.tmp"
del "%%a" && ren "%%a.tmp" "%%a"
)
REM Info auf dem Screen über einen erfolgreichen Abschluss
ECHO Erfolgreich!