Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Grosse datei Teilen...

blow / 9 Antworten / Flachansicht Nickles

Hey leute, brauche dringend hilfe...


Ausgangslage: Ich habe dateien, die von einem Tag alle rechnungen beinhaltet. (Von einem verkaufsgeschäft) diese rechnungen sind alle aneinander gereiht und ich muss nun eine batch schreiben, die die rechnungen wieder trennt und in einzelne dateien abspeichert. vor jeder rechnung ist ein "f " und eine nummer. wie kann ich das machen?


bitte um hilfe

bei Antwort benachrichtigen
Yogibear blow „Grosse datei Teilen...“
Optionen

DOS, mit seinen paar Batch-Befehlen kann das wirklich nicht. Aber dafür gibt's ja den Windows Scripting Host. Leg eine Textdatei an und gib ihr die Endung .vbs. Der Inhalt des Visual Basic Scripts könnte in etwa so aussehen:


' Read data from "C:\tmp\Rechnungen.txt" and split by client

Option Explicit
On Error Resume Next

Const ReadFile = 1, WriteFile = 2
Dim fso, BillFile, TextStream, TextLine, BillName, NewBill
Set fso = CreateObject("Scripting.FileSystemObject")
Set BillFile = fso.GetFile("C:\tmp\Rechnungen.txt") ' complete file
Set TextStream = BillFile.OpenAsTextStream(ReadFile)

Do ' get first bill number
TextLine = TextStream.ReadLine
Loop Until TextStream.AtEndOfStream Or _
Left(TextLine, 1) = "f" And IsNumeric(Mid(TextLine, 2, 6))

Do Until TextStream.AtEndOfStream
BillName = Left(TextLine, Instr(1, TextLine, "=") - 1) & ".txt"
Set NewBill = fso.OpenTextFile("C:\tmp\" & BillName, WriteFile, True)
Do ' write single client bill file
 NewBill.WriteLine TextLine
 TextLine = TextStream.ReadLine
Loop Until TextStream.AtEndOfStream Or _
 Left(TextLine, 1) = "f" And IsNumeric(Mid(TextLine, 2, 6))
NewBill.Close
Loop
TextStream.Close

Set NewBill = Nothing
Set TextStream = Nothing
Set BillFile = Nothing
Set fso = Nothing
bei Antwort benachrichtigen