CSV fil behandling Windows script, bedste værktøjer, nemmeste aproach?

Indlæg af Hanne Mølgaard Plasc

Problem



På en Windows-platform bruger du de færrest mulige værktøjer (foretrækker at bruge kun indbyggede værktøjer som CMD, men jeg forstår noget som sed kan være nødvendigt); Jeg vil gerne oprette et script, der vil udføre som følger.


Det skal indtaste en csv-fil, udtrække bestemte felter fra den pågældende fil og derefter udgive en ny og enestående formateret output csv-fil, der indeholder de udpakkede felter. For eksempel.


Input.csv
Cust#, CustFName, CustLName, Address, City, State, Zip, Order#, Qty, Part, Cost, Total,,,,

Output.csv
,,, Qty, City,,,, CustFName,,, Total,,, Zip,,,


Csv-filerne vil variere antallet af poster. Nogle vil have 3 poster, og andre vil have 10.000 poster.

Bedste reference


Du kan bruge VBscript, der skal være tilgængeligt på næsten alle Windows-systemer siden Win2K. Her er et eksempel, forudsat at du ikke har 'citeret' kommaer.


Dim fso, f2, ts, ts2, line, records
Const ForReading = 1, ForWriting = 2, ForAppending = 8

Set fso = CreateObject("Scripting.FileSystemObject")
Set tf1 = fso.OpenTextFile("infile.txt", ForReading, false)
Set tf2 = fso.OpenTextFile("outfile.txt", ForWriting, true)
Do While Not tf1.AtEndOfStream
    line = tf1.ReadLine
    records=Split(line,",")
    ' ... process your records here '
    line = Join(records,",")
    tf2.WriteLine line
Loop
tf1.Close
tf2.Close


Kør dette fra cmd-linjen som 'cscript yourscript.vbs'. For den 'rigtige' ting vil du sandsynligvis nødt til at tilføje en kode til at håndtere forskellige antal poster, optegnelser, hvor kommaet er en del af citerede poster osv., Men den generelle tilgang bør være klar.


Her er et andet eksempel fra MS Win2K script guide:


http://technet.microsoft.com/en-us/library/ee176692.aspx[3]