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

Datei splitten jeweils nach 1000 Zeilen

Frage Entwicklung Batch & Shell

Mitglied: broholm

broholm (Level 1) - Jetzt verbinden

05.11.2008, aktualisiert 06.11.2008, 7513 Aufrufe, 7 Kommentare

Wahrscheinlich ziemlich einfach für jemanden der sich mit batch Skripten auskennt...

Problem:

Ich habe eine Datei mit > 290 000 Zeilen.
Diese würde ich gerne splitten in kleinere Dateien.

Gesplittet werden soll immer nach 1 000 Zeilen.

Die Dateinamen der entstehenden einzelnen Dateifragmente sollen durchnummmeriert werden.

Ausgangsdatei
--> erzeugte_datei_1
--> erzeugte_datei_2
[...]

Danke für eure Hilfe!
Andi
Mitglied: 71332
05.11.2008 um 18:20 Uhr
wie waer's hiermit (split after X bytes):
http://www.blue-series.de/products/spx/splitting_de.htm

oder mit einem von diesen:
http://www.snapfiles.com/Freeware/downloader/fwfilesplit.html

so long
plague
Bitte warten ..
Mitglied: bastla
05.11.2008 um 18:28 Uhr
Hallo broholm und willkommen im Forum!

Wenn's aber trotzdem mit Bordmitteln sein soll, etwa so:
01.
@echo off & setlocal 
02.
set /a Anzahl=1000 
03.
set /a Nr=1 
04.
set /a Z=0 
05.
 
06.
for /f "delims=" %%i in (D:\Ausgangsdatei.txt) do set "Zeile=%%i" & call :ProcessLine 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
>>D:\Temp\erzeugte_datei_%Nr%.txt echo %Zeile% 
11.
set /a Z+=1 
12.
echo %Nr%_%Z% 
13.
if %Z% lss %Anzahl% goto :eof 
14.
set /a Z=0 
15.
set /a Nr+=1 
16.
goto :eof
Hinsichtlich des Formats der Nummerierung habe ich mich an Deine Vorlage gehalten, obwohl ich eher zu einer fixen Länge tendiere und die Dateien daher "erzeugte_datei_0001", "erzeugte_datei_0002" etc benennen würde ...

Grüße
bastla
Bitte warten ..
Mitglied: broholm
06.11.2008 um 08:31 Uhr
Hallo euch beiden, und vielen Dank für die schnellen Antworten.

Batch, also Bordmittel, sollte es schon sein, von daher bastla's Lösung.
Die funktioniert auch einwandfrei, allerdings komme ich nun zu einem neuen Problem...
Innerhalb der Daten können alle möglichen "Sonderzeichen" vorkommen, wie kann ich die
"escapen", bzw. evtl die ganze Zeile automatisch damit mir die batch nicht abbricht?

Beispiel bei der Ausführung der batch:
01.
Der Befehl "CO" ist entweder falsch geschrieben oder 
02.
konnte nicht gefunden werden. 
03.
1_8575 
04.
1_8576 
05.
1_8577 
06.
Der Befehl "Sohn'" ist entweder falsch geschrieben oder 
07.
konnte nicht gefunden werden. 
08.
1_8578 
09.
1_8579 
10.
Der Befehl "Sohn'" ist entweder falsch geschrieben oder 
11.
konnte nicht gefunden werden. 
12.
1_8580 
13.
1_8581 
14.
1_8582 
15.
Der Befehl "#228" ist entweder falsch geschrieben oder 
16.
konnte nicht gefunden werden. 
17.
1_8583 
18.
Der Befehl "auml" ist entweder falsch geschrieben oder 
19.
konnte nicht gefunden werden. 
20.
1_8584
Grüße, Andi
Bitte warten ..
Mitglied: bastla
06.11.2008 um 08:52 Uhr
Hallo broholm!

Füge nach Zeile 9 ein:
set "Zeile=%Zeile:&=^&%"
und das auch analog für "<", ">" und "|".

Wenn Du mir dann allerdings noch erzählst (Beispiel hast Du ja keines geliefert - btw: ist ja immer wieder spannend, sowas im Blindflug machen zu dürfen), dass es auch Zeilen mit einzelnen Anführungszeichen gibt, ändert sich das (Bord-)Mittel der Wahl auf "VBScript" ...

Grüße
bastla
Bitte warten ..
Mitglied: broholm
06.11.2008 um 10:25 Uhr
Hallo bastla,

kurz zum "warum das ganze":
Ich habe einen riesigen dump einer mysql aus einer zeit als mysql noch nicht utf-8 unterstützte. diese dump muss ich abarbeiten und möchte dies daher vorab in kleinere teile splitten per batch.

beispiel aus dem dump:
01.
INSERT INTO trans VALUES (28897,20041028235501,'','tr','\nAn&#305;lmayan ülkelerde'); 
02.
INSERT INTO trans VALUES (28898,20041028235501,'','uk','&#1076;&#1110;&#1081;&#1089;&#1085;&#1072; &#1090;&#1074;&#1082;&#1072;&#1079;&#1072;&#1085;&#1080;&#1093; &#1082;&#1088;&#1072;&#1111;&#1085;.'); 
03.
INSERT INTO trans VALUES (28899,20041028235501,'','hu','A fel nem sorolt országokban a helyi garanciális jogszabályok érvényesek.'); 
04.
INSERT INTO contacts VALUES (9257,20040213092245,'','\\\"Linas\\\"','lt','lt','CD \\\"Linas\\\"','','žio 23','','v&#279;žys','','','','0','101-500',' A \\\"Rag&#279;i\\\"','v&#279;žys',NULL,'on','on',NULL,NULL); 
05.
INSERT INTO contacts VALUES (15531,20040316135757,'','Grakas','lt','lt','CD \\\"B&#363;ta\\\"','','15','7617','Šiai','','','','','500','UAB \\\"Technikonas\\\"','',NULL,'on','on',NULL,NULL);


Aktuell läuft die batch fast perfekt, ich bekomme nur noch einen Fehler bei folgenden Inhalten:

01.
' A \\\"Rag&#279;i\\\"'
oder
01.
'CD \\\"B&#363;ta\\\"'
Dank und Gruß,
Andi
Bitte warten ..
Mitglied: bastla
06.11.2008 um 10:47 Uhr
Hallo broholm!

Mit den beiden dargestellten Zeilen gibt es bei mir kein Problem, es könnten aber noch irgendwelche "nicht-druckbare" Zeichen auf dem Weg von Dir zu mir auf der Strecke geblieben sein - falls Du einen Editor mit Anzeige aller Steuerzeichen oder einen Hex-Editor bei der Hand hast, könntest Du das einmal überprüfen ...

Grüße
bastla
Bitte warten ..
Mitglied: broholm
06.11.2008 um 11:14 Uhr
Hallo bastla,

da hast du recht, mit dem auszug hier, funktioniert es bei mir auch.
Ich werde mal weiterforschen woran das noch liegt.

Hast mir aber super weitergeholfen. Somit werde ich diesen Beitrag mal als gelöst markieren. Den Rest werd ich wohl noch schaffen und hat ja auch nichts mehr mit der batch ansich zu tun.

Vielen Dank nochmals!

Grüße,
Andi
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Perl
gelöst Mit Perl aus einer Datei teilidentische Zeilen löschen (5)

Frage von Jeduja zum Thema Perl ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...