Zwei Zeilen in einer Datei auslesen und ggf. Datei löschen
Hallo,
vielleicht kann mir hier jemande helfen. Ich habe ein Problem und suche ein Script. Ich habe hier schon einiges gefunden und versucht umzubauen, hab das aber irgendwie nicht hinbekommen.
Es geht um Folgendes: ich habe Dateien in denen stehen Werte zum Einlesen in eine Buchhaltungssoftware. Diese wirft aber Fehler wenn kein Vorgang auf dem Konto war. In der Datei sind dann zwei Zeilen nahezu identisch:
:20:STARTUMSE
:25:?????????????????/?????????
:28C:00000/001
:60F:C091015EUR536,82
:62F:C091015EUR536,82
Es geht um die Zeilen 60F und 62F. Wenn die EUR Werte gleich sind dann kann die Datei nicht importtiert werden. Die Werte stehen leider auch nicht immer in den gleichen Zeilen.
Gibts da ne ganz einfache Lösung, wie ich die Dateien per Batch / Script unter Windows (XP, 2003R2) aussortieren könnte?
Vielen Dank für Eure Hilfe!
Grüße
Michael / Amurcat
vielleicht kann mir hier jemande helfen. Ich habe ein Problem und suche ein Script. Ich habe hier schon einiges gefunden und versucht umzubauen, hab das aber irgendwie nicht hinbekommen.
Es geht um Folgendes: ich habe Dateien in denen stehen Werte zum Einlesen in eine Buchhaltungssoftware. Diese wirft aber Fehler wenn kein Vorgang auf dem Konto war. In der Datei sind dann zwei Zeilen nahezu identisch:
:20:STARTUMSE
:25:?????????????????/?????????
:28C:00000/001
:60F:C091015EUR536,82
:62F:C091015EUR536,82
Es geht um die Zeilen 60F und 62F. Wenn die EUR Werte gleich sind dann kann die Datei nicht importtiert werden. Die Werte stehen leider auch nicht immer in den gleichen Zeilen.
Gibts da ne ganz einfache Lösung, wie ich die Dateien per Batch / Script unter Windows (XP, 2003R2) aussortieren könnte?
Vielen Dank für Eure Hilfe!
Grüße
Michael / Amurcat
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 127419
Url: https://administrator.de/contentid/127419
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
2 Kommentare
Neuester Kommentar
mit vbscript :
aber was willst du als Ergebnis
EUR536,82
dann speichere diese datei unter name.vbs und führ die aus.
'''''''''''''''''''''''
set fso = createobject("scripting.filesystemobject")
set file = fso.getfile("C:\Dokumente und Einstellungen\User\Desktop\quelle.txt")
set datei =fso.opentextfile("C:\Dokumente und Einstellungen\User\Desktop\ziel.txt",8,true)
set stream = file.openastextstream(1) 'datei zum lesen öffnen
do
stream.skip(12) 'erste 12 Zeichen überspringen
line = stream.Readline
if instr(line,"EUR") then datei.Writeline line 'holt die Zeilen mit EUR
loop while not stream.atendofstream
stream.close
datei.close
msgbox "Fertig"
aber was willst du als Ergebnis
EUR536,82
dann speichere diese datei unter name.vbs und führ die aus.
'''''''''''''''''''''''
set fso = createobject("scripting.filesystemobject")
set file = fso.getfile("C:\Dokumente und Einstellungen\User\Desktop\quelle.txt")
set datei =fso.opentextfile("C:\Dokumente und Einstellungen\User\Desktop\ziel.txt",8,true)
set stream = file.openastextstream(1) 'datei zum lesen öffnen
do
stream.skip(12) 'erste 12 Zeichen überspringen
line = stream.Readline
if instr(line,"EUR") then datei.Writeline line 'holt die Zeilen mit EUR
loop while not stream.atendofstream
stream.close
datei.close
msgbox "Fertig"
Folgendes Script durchsucht in einem angegebenen Verzeichnis alle Dateien nach deiner doppelten Zeichenfolge "EUR" egal in welchen Zeilen sie stehen.Es vergleicht dazu alles was hinter "EUR" steht. Zum Schluss kommt eine Abfrage ob du die entsprechenden Dateien in einen Unterordner verschieben willst.
Anpassen musst du die Variable "rootFolder" für das Verzeichnis in dem die Dateien liegen.
VBS-Script:
Anpassen musst du die Variable "rootFolder" für das Verzeichnis in dem die Dateien liegen.
VBS-Script:
set objFS = CreateObject("Scripting.FileSystemObject")
set rootFolder = objFS.GetFolder("C:\Test")
set files = rootFolder.files
dim array_selected_files()
count = 0
for each file in files
dim already_found, first_amount
set objFile = objFS.OpenTextFile(file.Path, 1)
Do While objFile.AtEndOfStream <> true
line_text = objFile.ReadLine()
if InStr(1,line_text,"EUR") > 0 then
if already_found = true Then
if Trim(Mid(line_text, InStr(1,line_text,"EUR")+3,Len(line_text))) = Trim(first_amount) Then
ReDim Preserve array_selected_files(count + 1)
array_selected_files(count) = file.Path
count = count + 1
End if
Else
first_amount = Mid(line_text, InStr(1,line_text,"EUR")+3,Len(line_text))
already_found = True
End if
End if
Loop
objFile.Close
already_found = False
first_amount = ""
Next
if count > 0 then
if msgbox ("Es wurden "& count & " Dateien gefunden sollen sie nach '" & rootFolder.Path & "\Aussortiert\' verschoben werden?: ", 36) = 6 Then
for i = 0 to Ubound(array_selected_files) - 1
set objFile = objFS.GetFile(array_selected_files(i))
If objFS.FolderExists(rootFolder & "\Aussortiert") Then
objFile.Move(rootFolder & "\Aussortiert\")
Else
objFS.CreateFolder(rootFolder & "\Aussortiert")
objFile.Move(rootFolder & "\Aussortiert\")
End If
Next
Wscript.echo "Fertig!"
End if
Else
wscript.echo "Keine entsprechenden Dateien gefunden!"
End If