Datei einlesen - Zeilenweise Inhalt ändern - Datei abspeichern
Das einlesen unserer Stammzeitdaten, die für die Software jedoch so leider nicht bewertet werden kann.
Hallo ihr lieben,
kann mir mal jemand einen Tip geben.
Und zwar bekomme ich aus unserer Software Zeitdaten, die ich in dem Format leider nicht einlesen kann. Zur Zeit importiere ich diese in Excel und formatier sie hier um. Leider schaffe ich so aber einen Single Point of Failure (mich) und auch Flüchtigkeitsfehler können mir so passieren. Daher würde ich das ganze gerne automatisieren,
Die Ursprungsdatei sieht wie folgt aus:
Bsp.:
551|1212098|01.08.2010|08:30:00|16:30:00|0,75|273234|
Die Datei muss aber wie folgt aussehen (neuer Trenner ; )
022;L551;;1212098;01.08.2010;083000;163000;;273234;
022 -> Von mir vorgegebener Wert
L551 ->Ursprungsdatei erster Wert +L
1212098 -> Ursprungsdatei zweiter Wert (ohne Änderung)
;; Leerzeichen zwischen den Trenner muss eingefügt werden
01.08.2010 -> Ursprungsdatei dritter Wert (ohne Änderung)
08:30:00-> Ursprungsdatei vierter Wert (ohne : )
16:30:00-> Ursprungsdatei fünfter Wert (ohne : )
;; Leerzeichen zwischen den Trenner muss eingefügt werden
273234 -> Ursprungsdatei siebter Wert (ohne Änderung )
Ich wäre für eure Hilfe sehr Dankbar.
Wenn es nicht per Batch geht, wären VB Scripte für mich auch kein Problem hauptsache die Datei kann automatisiert verändert werden.
Gruß
Hallo ihr lieben,
kann mir mal jemand einen Tip geben.
Und zwar bekomme ich aus unserer Software Zeitdaten, die ich in dem Format leider nicht einlesen kann. Zur Zeit importiere ich diese in Excel und formatier sie hier um. Leider schaffe ich so aber einen Single Point of Failure (mich) und auch Flüchtigkeitsfehler können mir so passieren. Daher würde ich das ganze gerne automatisieren,
Die Ursprungsdatei sieht wie folgt aus:
Bsp.:
551|1212098|01.08.2010|08:30:00|16:30:00|0,75|273234|
Die Datei muss aber wie folgt aussehen (neuer Trenner ; )
022;L551;;1212098;01.08.2010;083000;163000;;273234;
022 -> Von mir vorgegebener Wert
L551 ->Ursprungsdatei erster Wert +L
1212098 -> Ursprungsdatei zweiter Wert (ohne Änderung)
;; Leerzeichen zwischen den Trenner muss eingefügt werden
01.08.2010 -> Ursprungsdatei dritter Wert (ohne Änderung)
08:30:00-> Ursprungsdatei vierter Wert (ohne : )
16:30:00-> Ursprungsdatei fünfter Wert (ohne : )
;; Leerzeichen zwischen den Trenner muss eingefügt werden
273234 -> Ursprungsdatei siebter Wert (ohne Änderung )
Ich wäre für eure Hilfe sehr Dankbar.
Wenn es nicht per Batch geht, wären VB Scripte für mich auch kein Problem hauptsache die Datei kann automatisiert verändert werden.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 146927
Url: https://administrator.de/contentid/146927
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Shorty2010.
Folgender Schnippsel solte die Arbeit für dich erledigen:
Die Sache mit den Leerzeichen, die einzufügen sind habe ich nicht verstanden, aber ich denke das bekommst du selbst hin.
Grüße
rubberman
PS: Willkommen im Forum!
Folgender Schnippsel solte die Arbeit für dich erledigen:
@echo off &setlocal
>neu.txt type nul
for /f "delims=|: tokens=1-9,11" %%a in (alt.txt) do (
>>neu.txt echo 022;L%%a;;%%b;%%c;%%d%%e%%f;%%g%%h%%i;;%%j;
)
Grüße
rubberman
PS: Willkommen im Forum!
Hallo Shorty2010,
hier eine Lösung in VBS:
MfG Sam
hier eine Lösung in VBS:
const ersetzen = true
const deinwert = "022"
const einzulesende_datei = "test.txt"
const temp_datei = "temp.txt"
dim objfso : set objfso = createobject("scripting.filesystemobject")
dim arr_line, inputfile, ouputfile
set inputfile = objfso.opentextfile(einzulesende_datei,1)
set outputfile = objfso.opentextfile(temp_datei,2, true)
do while not inputfile.atendofstream
arr_line = split(inputfile.readline(),"|")
outputfile.writeline deinwert & ";" & _
"L" & arr_line(0) & ";" & _
arr_line(1) & ";;" & _
arr_line(2) & ";" & _
replace(arr_line(3),":","") & ";" & _
replace(arr_line(4),":","") & ";;" & _
arr_line(5) & ";" & _
arr_line(6) & ";"
loop
inputfile.close
outputfile.close
if ersetzen = true then
objfso.deletefile einzulesende_datei
objfso.movefile temp_datei, einzulesende_datei
end if
MfG Sam