Einen definierte Anzahl Zeichen aus den Zeilen einer Textdatei entfernen
Moin zusammen,
vielleicht hat ja jemand von Euch eine Idee für mein Problem...
Aus einem Prozeß, auf den ich leider keinen Einfluss habe, erhalte ich täglich eine Textdatei, Namens "Checkcodes.txt".
In jeder Zeile der Textdatei muss stets das 16. bis einschließlich 23.Zeichen entfernt (ausgeschnitten) werden, um die Datei weiter verwursten zu können.
Beispielzeile:
Aus dem Prozeß kommt: (Der Zeitcode ist dummerweise immer doppelt vorhanden.)
XTLJ_ 10/02/07 12:16:40 12:16:40 12 XCOO7A2H1W.FR2
So muss es später aussehen:
XTLJ_ 10/02/07 12:16:40 12 XCOO7A2H1W.FR2
Eine aufwendige und zitterige Handarbeit, die meine Haare ergrauen läßt.
Die Anzahl der Zeilen dieser täglich neu erstellten Textdatei variiert leider immer.
Kann man da trotzdem eine Batch-Routine finden, die diese Aufgabe bewältigt?
Herzliche Grüße und vielen Dank vorab für Eure Mühe
Jabali07
In jeder Zeile der Textdatei muss stets das 16. bis einschließlich 23.Zeichen entfernt (ausgeschnitten) werden, um die Datei weiter verwursten zu können.
Beispielzeile:
Aus dem Prozeß kommt: (Der Zeitcode ist dummerweise immer doppelt vorhanden.)
XTLJ_ 10/02/07 12:16:40 12:16:40 12 XCOO7A2H1W.FR2
So muss es später aussehen:
XTLJ_ 10/02/07 12:16:40 12 XCOO7A2H1W.FR2
Eine aufwendige und zitterige Handarbeit, die meine Haare ergrauen läßt.
Die Anzahl der Zeilen dieser täglich neu erstellten Textdatei variiert leider immer.
Kann man da trotzdem eine Batch-Routine finden, die diese Aufgabe bewältigt?
Herzliche Grüße und vielen Dank vorab für Eure Mühe
Jabali07
Please also mark the comments that contributed to the solution of the article
Content-Key: 71779
Url: https://administrator.de/contentid/71779
Printed on: April 25, 2024 at 18:04 o'clock
4 Comments
Latest comment
Wenn du immer genau diese anzahl an Zeichen wilslt dann versuchs mal so:
Wenn das Format immer so bleibt und du dich an den Leerstellen orientieren kannst dann kannst dus so versuchen:
miniverusm
@echo off
set "infile=c:\eingangsdatei.txt"
set "outfile=c:\ausgangsdatei.txt"
FOR /F "delims=" %%l in ("%infile%") do echo %%l:~0,15%%l:~16>>"%outfile%"
set "infile=c:\eingangsdatei.txt"
set "outfile=c:\ausgangsdatei.txt"
FOR /F "delims=" %%l in ("%infile%") do echo %%l:~0,15%%l:~16>>"%outfile%"
Wenn das Format immer so bleibt und du dich an den Leerstellen orientieren kannst dann kannst dus so versuchen:
@echo off
set "infile=c:\eingangsdatei.txt"
set "outfile=c:\ausgangsdatei.txt"
FOR /F "tokens=1,2,3,5,6 delims= " %%a in ("%infile%") do echo %%a %%b %%c %%d %%e %%f>>"%outfile%"
set "infile=c:\eingangsdatei.txt"
set "outfile=c:\ausgangsdatei.txt"
FOR /F "tokens=1,2,3,5,6 delims= " %%a in ("%infile%") do echo %%a %%b %%c %%d %%e %%f>>"%outfile%"
miniverusm
@miniversum
Da für Laufvariable die zeichenweise Zerlegung nicht vorgenommen werden kann, musst Du die eingelesene Zeile zunächst einer weiteren Variable zuweisen, was (zur Vermeidung der "delayedexpansion") in einem Unterprogramm erfolgen sollte, also etwa:
Die Variante 2 benötigt auch noch kleinere Anpassungen:
Grüße
bastla
Da für Laufvariable die zeichenweise Zerlegung nicht vorgenommen werden kann, musst Du die eingelesene Zeile zunächst einer weiteren Variable zuweisen, was (zur Vermeidung der "delayedexpansion") in einem Unterprogramm erfolgen sollte, also etwa:
@echo off & setlocal
set "infile=C:\Checkcodes.txt"
set "outfile=C:\Checkcodes_cut.txt"
if exist "%outfile%" del "%outfile%"
FOR /F "usebackq delims=" %%L in ("%infile%") do call :ProcessLine "%%L"
goto :eof
:ProcessLine
set "Line=%~1"
(echo %Line:~0,15%%Line:~24%)>>"%outfile%"
Die Variante 2 benötigt auch noch kleinere Anpassungen:
@echo off & setlocal
set "infile=c:\eingangsdatei.txt"
set "outfile=c:\ausgangsdatei.txt"
if exist "%outfile%" del "%outfile%"
FOR /F "usebackq tokens=1,2,3,5,6" %%a in ("%infile%") do (echo %%a %%b %%c %%d %%e)>>"%outfile%"
Grüße
bastla