2010-11-18 20 views
0

Bir Windows platformunda, mümkün olan en az aracı kullanarak (yalnızca CMD gibi araçlarda kullanmayı tercih etmekteyim ancak sed gibi bir şeylerin gerçekleştirilmesi gerekebilir); Aşağıdaki gibi performans gösterecek bir senaryo oluşturmak istiyorum.CSV dosya işleme Windows komut dosyası, en iyi araçlar, en kolay yaklaşım?

Bir csv dosyası girmeli, bu dosyadan belirli alanları çıkarmalı ve ardından ayıklanan alanları içeren yeni ve benzersiz biçimde biçimlendirilmiş bir çıktı csv dosyası vermelidir. Örneğin.

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

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

csv dosyaları kayıtların sayısını değiştirecektir. Bazılarının 3 kaydı olacak ve diğerleri 10,000 kayıt olacak.

cevap

0

Win2K'den beri neredeyse tüm Windows sistemlerinde bulunması gereken VBscript'i kullanabilirsiniz. "Tırnak" virgüllerinin olmadığını varsayan bir örnek.

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 

Bunu "cscript yourscript.vbs" gibi cmd satırından çalıştırın. "Gerçek" bir şey için, muhtemelen, farklı kayıtlarla, virgülün kayıtlı kayıtların bir parçası olduğu kayıtlarla başa çıkmak için bazı kodlar eklemeniz gerekecek, ama genel yaklaşım açık olmalıdır.

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

: Burada

MS Win2K betik kılavuzundan başka bir örnektir
İlgili konular