amurcat
Goto Top

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

Content-ID: 127419

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

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

solionte
solionte 19.10.2009 um 13:31:09 Uhr
Goto Top
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"
colinardo
colinardo 19.10.2009 um 14:31:12 Uhr
Goto Top
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:
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