@ECHO off
SETLOCAL enabledelayedexpansion
CLS
REM Testprogramm
REM Entfernen aller Eintraege aus einer *.txt-Datei,
REM die an der Position x einen Grossbuchstaben
REM enthalten
REM
REM
https://supportnet.de/t/2227056
REM (c) batti-batch 04/2009
REM
REM getestet unter Windows 2000
REM ************************ SET-Block Beginn ************************
REM Laufwerk, Pfad und Name der Quelldatei
SET "quell_datei=c:\test\rom\rom_1.txt"
REM Laufwerk, Pfad und Name der Zieldatei
SET "ziel_datei=c:\test\rom\rom_2.txt"
REM Laufwerk, Pfad und Name der Tempdatei
SET "temp_datei=c:\test\rom\rom_temp.txt"
REM Zeichenposition
REM Zaehlung beginnt bei 0 (Null)
SET /a "zeichen_pos=14"
REM Zaehler fuer die Anzahl der Datensaetze
REM Diese Zuweisungen nicht aendern
SET /a "zaehler_1=0"
SET /a "zaehler_2=0"
REM ************************ SET-Block Ende **************************
REM Falls die Zieldatei existiert, wird sie geloescht
IF EXIST "%ziel_datei%" DEL /f "%ziel_datei%" 1>NUL 2>NUL
REM Falls die Tempdatei existiert, wird sie geloescht
IF EXIST "%temp_datei%" DEL /f "%temp_datei%" 1>NUL 2>NUL
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET "temp_varia=%%i"
SET "temp_varia=!temp_varia:~%zeichen_pos%,1!"
REM Achtung:
REM Die Grossbuchstaben in dieser FOR-Schleife
REM muessen bis "Z" ergaenzt werden!
FOR %%a IN (A B C D) DO (
IF [%%a] EQU [!temp_varia!] (
ECHO %%i>>"%temp_datei%"
SET /a "zaehler_1+=1"
)
)
)
FOR /f "delims=" %%a IN ('FINDSTR . "%quell_datei%"') DO (
FINDSTR /c:"%%a" "%temp_datei%" 1>NUL || (
ECHO %%a>>"%ziel_datei%"
SET /a "zaehler_2+=1"
)
)
REM Tempdatei loeschen
IF EXIST "%temp_datei%" DEL /f "%temp_datei%" 1>NUL 2>NUL
REM Ausgabe der Ergebnisse
ECHO.
ECHO.
ECHO Fertig^^!
ECHO.
ECHO Die Zieldatei "%ziel_datei%" enthaelt %zaehler_2% Datensaetze.
ECHO.
ECHO Anzahl der entfernten Datensaetze: %zaehler_1%.
ECHO.
ECHO.