Top-Themen

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

Frage Entwicklung Batch & Shell

GELÖST

Datei splitten jeweils nach 1000 Zeilen

Mitglied: broholm

broholm (Level 1) - Jetzt verbinden

05.11.2008, aktualisiert 06.11.2008, 8232 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
Batch & Shell
Duplikate finden Jeweils 2 Zeile
gelöst Frage von TestolinoBatch & Shell4 Kommentare

Hallo Zusammen, ich habe ein text Datei und wurde gern die doppelte Zeile in eine extra .txt Kopieren und ...

XML
XML Datei mit Powershell splitten
gelöst Frage von LianenSchwingerXML2 Kommentare

Hallo, ich habe eine riesige Exportdatei im XML-Format die ich nicht weiterverarbeiten kann. Der Aufbau ist wie folgt: Ich ...

Batch & Shell
Batch: Mehrere .txt Dateien zu einer zusammenfügen, dabei jeweils die erste Zeile löschen
gelöst Frage von v.piepmatzBatch & Shell5 Kommentare

Hallo, ich bin leider kompletter Neueinsteiger bzgl. batch-Dateien, suche jetzt aber eine Möglichkeit mehrere .txt Dateien, welche in einem ...

Entwicklung
Notepad++ Reihenfolge von jeweils 2 Zeilen umkehren
gelöst Frage von maxicoEntwicklung7 Kommentare

Hallo zusammen, ich habe eine unendlich lange .txt Datei vor mir, die nach folgendem Schema aufgebaut ist: Zeile1: Text ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 6 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 13 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 17 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...