Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 8009 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 ..
Ähnliche Inhalte
XML
gelöst XML Datei mit Powershell splitten (2)

Frage von LianenSchwinger zum Thema XML ...

Entwicklung
gelöst Notepad++ Reihenfolge von jeweils 2 Zeilen umkehren (7)

Frage von maxico zum Thema Entwicklung ...

Batch & Shell
Zeile eine Datei per batch ersetzen (2)

Frage von duckknight zum Thema Batch & Shell ...

Neue Wissensbeiträge
Mac OS X

Apple hat macOS High Sierra veröffentlicht

(4)

Information von Frank zum Thema Mac OS X ...

Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

(4)

Information von BassFishFox zum Thema Viren und Trojaner ...

Notebook & Zubehör

WOL bei HP Notebooks

(8)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

Heiß diskutierte Inhalte
Windows Server
Seit IP Umstellung DC DNS Fehler (29)

Frage von Yaimael zum Thema Windows Server ...

Windows 10
gelöst Netzwerkkarte schaltet sich erst nach dem Logon ein (24)

Frage von DerWoWusste zum Thema Windows 10 ...

Grafik
gelöst CAD Arbeitsplätze (17)

Frage von Diddi93 zum Thema Grafik ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (16)

Frage von Voiper zum Thema Weiterbildung ...