daki
Goto Top

Bestimmte Textstellen (immer fest) einer Textdatei per Batch ändern

Hallo Forum,

ich habe hier eine Textdatei mit Tankstellenauswertungen. Zeilenweise sieht die Datei z.B. so aus:

A0000656000000001200000000003039860005058000000261110212500E

Aussehen soll die Datei aber nach der Bearbeitung so:

A1300656000001301200000000003039860005058000000261110212500E

Das heisst:

Die Stellen 2-3 sollen von "00" auf "13" abgeändert werden, genau wie die stellen 14-15 von "00" auf "13" abgeändert werden sollen.

Die länge des Datensatzes ist immer gleich, es soll einfach immer egal was drinsteht 2-3 und 14-15 auf "13" geändert werden, und zwar bei jeder Zeile.

dürfte normal möglich sein, da ich es mit 2-3 schon geschafft habe. (Einfach A00 durch A13 ersetzen) jedoch wünsche ich mir was handfestes welches nicht zwingend "00" als Vorlage voraussetzt.

vielen Dank für die Hilfe

mfG

Daniel

Content-Key: 162138

Url: https://administrator.de/contentid/162138

Printed on: April 23, 2024 at 14:04 o'clock

Member: Ralph4
Ralph4 Mar 07, 2011 at 08:29:02 (UTC)
Goto Top
Hallo Daniel,

dies ist nicht ganz so einfach es sei denn die ersten 15 Ziffern sind immer gleich, wovon ich erst einmal nicht ausgehe.
Aus diesem Grunde benötigst du ein parser Progamm weilches die betreffenden Positionen (2und3 sowie 14 und 15) austauscht und danach die Datei wieder schließt.
Ich würde dieses, an deiner Stelle, im VBS programmieren. Hier ein Link der dir vieleicht weiterhilft.
http://www.lockergnome.com/sqlsquirrel/2007/12/18/how-to-parse-a-text-f ...
Member: pieh-ejdsch
pieh-ejdsch Mar 07, 2011 at 09:31:15 (UTC)
Goto Top
moin daki,

Verwirrung...
sollen die Zeichen nun nur ersetzt werden, wenn es nur bestimmte Zeichen an den Entsprechenden Stellen sind oder ist es egal, was an diesen Stellen steht?

Gruß Phil
Member: Snowman25
Snowman25 Mar 07, 2011 at 09:33:20 (UTC)
Goto Top
Zitat von @Ralph4:
dies ist nicht ganz so einfach es sei denn die ersten 15 Ziffern sind immer gleich

Wozu müssen die immer gleich sein? Muss man halt den String in Stückchen schneiden und ändern. Stört doch nicht SO arg.


Hallo @daki,

Du könntest mal folgende Batch ausprobieren:
@Echo off && setlocal enabledelayedexpansion
set Quelle=test.txt
set Ziel=test_neu.txt
for /F %%A in (%Quelle%) do (
	if NOT %%A=="" (  
		call :procLine %%A
	)
)

goto eof

:procLine
set string_0=%1
set string_1=%string_0:~0,1%
set string_2=%string_0:~3,10%
set string_3=%string_0:~15%
set string_full=%string_1%13%string_2%13%string_3%
echo %string_full%>>%Ziel%

:eof
Quelle und Ziel natürlich nach Bedarf anpassen.

Gruß
Snow
Mitglied: 60730
60730 Mar 07, 2011 at 09:47:28 (UTC)
Goto Top
Moin,

angenommen es ist immer die gleiche Textdatei...
...und immer die gleichen zu ersetzenden Werte an der gleichen Stelle...

setlocal
for /f %%a in (C:\script\searchNreplace\zahlen\org.ini) do set line=%%a & call:searchnreplace
goto :eof
:searchnreplace
if %line:~1,2%=00 if %line:~14,2%==00 echo %line:~0,1%13%line:~4,13%13%line:~16%>>C:\script\searchNreplace\zahlen\new.ini

Ich hoffe, du kannst das nachvollziehen.

Gruß

edit zu langsam - dafür aber ohne das @echo off face-wink (dafür aber auch ohne setlocal)
edit² - den Einwand von Pietsch hab ich durch die ganzen Ifs vor dem Echo einfach mal vorausgesetzt - falls das nicht so wäre - wie ich es gedacht habe, einfach die ifs weg lassen.
Member: daki
daki Mar 07, 2011 at 13:18:27 (UTC)
Goto Top
Hallo an Alle,

ich habe das Skript von Snowman25 probiert und - PERFEKT.

Ich danke auch allen anderen für Ihre Lösungen aber für mich ist das Problem hiermit erledigt und ich bedanke mich recht herzlich.

mfG

Daniel