Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

csv per vbs splitten, dann letzte Zeile löschen

Frage Entwicklung Batch & Shell

Mitglied: Havanna

Havanna (Level 1) - Jetzt verbinden

29.02.2008, aktualisiert 03.03.2008, 7426 Aufrufe, 4 Kommentare

Moin, ich bin der Neue
Und gleich mal mit einer Frage nerven *g*
Arbeite mich gerade in vbs ein.
Ich muss eine csv splitten, in 10000 Zeilen aufgeteilt.
Das klappt auch soweit ganz gut mit dem was ich mir hier im Forum schon zusammengesucht habe.
Haken an der Geschichte: Die gesplitteten Dateien enthalten am Ende immer eine Leerzeile und ich hab bisher keinen Weg gefunden das zu unterbinden.
Wenn ich MaxLine auf 9999 setzte dann hab ich zwar die maximalen 10000 Zeilen, aber trotzdem am Ende eine Leerzeile.
MaxLine auf 10000 bringt mir Dateien mit 10001 Zeilen und halt wieder mit der Leerzeile am Ende :/

Any solutions for me?

Hier mal das was ich mir bisher zusammengeschustert habe:
01.
'SplitTextFile.vbs 
02.
sInFile = WScript.Arguments(0) 
03.
If WScript.Arguments.Count < 2 Then 
04.
    lMaxLine = 10000 
05.
Else 
06.
    lMaxLine = CLng(WScript.Arguments(1)) 
07.
End If 
08.
 
09.
Set fso = Wscript.CreateObject("Scripting.FileSystemObject") 
10.
sPath = fso.GetFile(sInFile).Path 
11.
sPath = Left(sPath, InstrRev(sPath, "\") - 1) 
12.
sOutName =  sPath & "\" & fso.GetBaseName(sInFile) & "_" 
13.
If InstrRev(sInFile, ".") Then 
14.
    sOutType = Mid(sInFile, InstrRev(sInFile, ".")) 
15.
End If 
16.
 
17.
lLineNr=0 
18.
iFileNr=101 
19.
 
20.
Set oOut = fso.OpenTextFile(sOutName & Mid(CStr(iFileNr),2) & sOutType, 2, True) 
21.
Set oIn = fso.OpenTextFile(sInFile, 1) 
22.
Do While Not oIn.AtEndOfStream 
23.
	oOut.WriteLine oIn.ReadLine 
24.
	lLineNr = lLineNr + 1 
25.
	If lLineNr >= lMaxLine Then 
26.
		lLineNr = 0 
27.
		oOut.Close 
28.
		iFileNr = iFileNr + 1 
29.
		Set oOut = fso.OpenTextFile(sOutName & Mid(CStr(iFileNr),2) & sOutType, 2, True) 
30.
	End If 
31.
Loop 
32.
oIn.Close 
33.
oOut.Close 
34.
WScript.Echo "Erledigt :)"
Oder muss ich die Ausgabedatei noch einmal komplett in eine neue schreiben halt bis auf die letzte Zeile?


[Edit Biber] In <code>-Tags gesetzt. [/Edit]
Mitglied: bastla
29.02.2008 um 19:05 Uhr
Hallo Havanna und willkommen im Forum!

Versuch es vielleicht so:
01.
... 
02.
Do While Not oIn.AtEndOfStream 
03.
	oOut.Write oIn.ReadLine 'Zeile ohne Zeilenschaltung schreiben 
04.
	lLineNr = lLineNr + 1 
05.
	If lLineNr >= lMaxLine Then 
06.
		lLineNr = 0 
07.
		oOut.Close 
08.
		iFileNr = iFileNr + 1 
09.
		Set oOut = fso.OpenTextFile(sOutName & Mid(CStr(iFileNr),2) & sOutType, 2, True) 
10.
	Else 'noch nicht letzte Zeile, daher Zeilenschaltung anhängen 
11.
		oOut.Write vbCrLF 
12.
	End If 
13.
Loop 
14.
oIn.Close 
15.
oOut.Close 
16.
WScript.Echo "Erledigt ;-)"
Grüße
bastla

P.S.: Wir hätten hier auch <code>-Tags ...
Bitte warten ..
Mitglied: Havanna
03.03.2008 um 13:38 Uhr
Vielen Dank, funktioniert so.
Minimanko: In der letzten Datei die geschrieben wird ist trotzdem noch am Ende eine Leerzeile.
Aber das ist nicht so schlimm, wenn man das weiß dann kann man die noch mal eben schnell manuell löschen
Bitte warten ..
Mitglied: bastla
03.03.2008 um 13:52 Uhr
Hallo Havanna!

In der letzten Datei die geschrieben wird ist trotzdem noch am Ende eine Leerzeile.
Stimmt leider - dann versuchen wir's eben ersatzweise so:
01.
... 
02.
	Else 'noch nicht letzte Zeile, daher Zeilenschaltung anhängen 
03.
		If Not oIn.AtEndOfStream Then oOut.Write vbCrLF 'falls nicht schon letzte Zeile 
04.
	End If 
05.
...
Grüße
bastla
Bitte warten ..
Mitglied: Havanna
03.03.2008 um 14:24 Uhr
Perfekt.
Selbst wenn in der csv Vorlage eine Leerzeile am Ende ist dann wird diese nicht mitgespeichert.
Vielen Dank
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows 7
Texte weisen Fehler auf letzte Zeile wie Barcod Striche (3)

Frage von Nemonautilus zum Thema Windows 7 ...

Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

VB for Applications
gelöst Vbscript bestimmte Zeile ungeachtet der Nummerierung löschen (4)

Frage von aletri zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...