mydom23
Goto Top

BATCH - Zeilen- und Spaltenweise einlesen und ausgeben

Hi,

ich habe ein kleines Problem. Ich brauche ein Script dass mir zwei Dateien zusammenführt und den Inhalt der Dateien bearbeitet. Ziel ist es die zwei Dateien für einen Import vorzubereiten. Die zwei Dateien sehen wiefolgt aus:

Datei1:
01.01.2009;09:00;17,89;4;1;1
01.01.2009;09:12;21,13;4;1;1
01.01.2009;09:15;44,99;3;1;1

Datei2:
01.01.2009;09:15;44,99;3;2;1
01.01.2009;09:21;29,84;6;2;1

Aus diesen zwei Dateien soll eine Datei gemacht werden. Dabei muss jeweils der 5. Token einer Zeile angepasst werden. Als Ausgabe soll dann folgendes bei rauskommen:

01.01.2009;09:00;17,89;4;1;1
01.01.2009;09:12;21,13;4;1;1
01.01.2009;09:15;44,99;3;1;1
01.01.2009;09:15;44,99;3;1;1
01.01.2009;09:21;29,84;6;1;1

Folgendes habe ich bereits:
@echo off
COLOR 7
echo ==================================================
echo Exportdateien zusammenfuerhen
echo ==================================================
echo Welche Dateien wollen Sie zusammenfuehren?
:readfile1
set /p file1=Datei 1:
IF exist %file1% (
COLOR 7
echo OK
) ELSE (
COLOR C
echo !!!!! Datei %file1% nicht gefunden !!!!!
goto :readfile1
)
:readfile2
set /p file2=Datei 2:
IF exist %file2% (
COLOR 7
echo OK
) ELSE (
COLOR C
echo !!!!! Datei %file2% nicht gefunden !!!!!
goto :readfile2
)
echo Wie soll die erzeugte Datei heissen?
set /p outputname=Dateiname:
for /F "Tokens=5 delims=;" %%i in (%file1%) do set abteilung=%%i
* HIER MUSS DIE DATEI ZEILENWEISE AUSGELESEN WERDEN, DER 5. TOKEN GEÄNDERT WERDEN UND IN EINE DATEI GESCHRIEBEN WERDEN *
pause

Hier werden zunächst die beiden Dateien angegeben, der Name der Ausgabedatei festgelegt und die Referenznummer eingelesen auf welche der 5. Token geändert werden soll. Die Ausgabe in eine Datei ist auch kein Problem. Das bekomme ich mit "echo %var% >> %outputname%" hin. Jedoch weiß ich nicht wie ich es schaffe die Dateien zeilenweise durch zu gehen und jeweils die 5. Spalte zu ändern.

Ich hoffe jemand kann mir da weiter Helfen und nen kleinen Tipp geben. Ich bin im batchen leider nicht so fit.

Danke.

Content-ID: 129013

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

Ausgedruckt am: 19.11.2024 um 17:11 Uhr

60730
60730 10.11.2009, aktualisiert am 18.10.2012 um 18:39:53 Uhr
Goto Top
Servus,

bitte benutze die Fomatierungshilfe und genauer Code Blöcke.

Dann:

COLOR 7
ist kein gültiger Befehl...

dann würde ich auch mal nach einem Beitrag meinerseits nachsehen, der sich nennt.
Dort sind einige "Such & Ersetzen" Threads zu finden.

btw:
copy %file1% + %file2% outputname
sort outputname /o outputname.txt

so würde ich das weiterführen.
Nur was genau die Zeile machen soll?
for /F "Tokens=5 delims=;" %%i in (%file1%) do set abteilung=%%i
Hab ich ehrlich nicht verstanden..


Gruß
bastla
bastla 10.11.2009 um 12:14:42 Uhr
Goto Top
Hallo mydom23!

Um in Datei2 jeweils als 5. Token den Inhalt von %abteilung% einzutragen, etwa so:
move %file2% %file2%.tmp
for /f "tokens=1-6 delims=;" %%a in (%file2%.tmp) do >>%file2% echo %%a;%%b;%%c;%%d;%abteilung%;%%f  
del %file2%.tmp
Grüße
bastla
mydom23
mydom23 10.11.2009 um 12:23:09 Uhr
Goto Top
Hi,
danke bastla so funktionierts.
Habe nicht gewusst dass man dem %%a einfach ein %%b %%c etc. anhängen kann ohne diese zu definieren.