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

Textdokument per BATCH-Datei trennen

Frage Entwicklung Batch & Shell

Mitglied: sYntaX

sYntaX (Level 1) - Jetzt verbinden

29.03.2006, aktualisiert 05.04.2006, 13184 Aufrufe, 5 Kommentare

Textdokument per BATCH-Datei trennen

Hallo,
ich bräuchte eine kleine Hilfe zum thema BATCH-Datei. Ich muss eine Textdatei in mehrere Dateien aufsplitten.
Meine textdokument sieht ungefähr so aus:

Anfang1 Datum_Zeit_ID
ID: DATEINAME.DAT
DATA DATA DATA DATA DATA
DATA DATA DATA DATA DATA
DATA DATA DATA DATA DATA
DATA DATA DATA DATA DATA
Ende1_Zeichenkette
Anfang2 Datum_Zeit_ID
ID: DATEINAME.DAT
DATA DATA DATA DATA DATA
DATA DATA DATA DATA DATA
DATA DATA DATA DATA DATA
DATA DATA DATA DATA DATA
Ende2_Zeichenkette
usw..... bis ca. 20

Meine Batchdatei soll nun von Anfang1 bis Ende1 jede Zeile in eine neue Textdatei schreiben.
Sobald man bei Ende1 angekommen ist, soll er die neu erstellte datei schließen und mit dem Dateinamen
der unter ID: steht abspeichern. Dannach soll er weitermachen (von Anfang2 bis Ende2...)
Es können mehr als 2 Dateien in einer stehen. Desshalb muss ich Sie auftrennen um an die
"ursprünglichen" Dateien mit dem richtigen Dateinamen (der unter ID: steht) zu kommen.
Das eigentliche auslesen der einzelnen zeilen konnte ich mit FOR/F realisieren.
Aber wie kann ich meiner Batchdatei sagen das er nach Ende1 eine neue Datei erstellen soll
(mit Inhalt von Anfang2-Ende2...usw.)

Ich hoffe Ihr könnt mir ein wenig helfen. Ich erwarte keine komplette Batchdatei als Hilfe,
nur einen kleinen Lösungsansatz;D

Ich danke euch

mfg
sYntaX
Mitglied: docsam
29.03.2006 um 13:55 Uhr
mit FOR kannst Du eine Datei zeilenweise auslesen.
Schau Dir mal die Hilfe mit for /? an.

Eine direkte Lösung hab ich jetzt nicht parrat.
Bitte warten ..
Mitglied: sYntaX
29.03.2006 um 17:13 Uhr
Danke, aber das auslesen der einzelnen zeilen stellt ja kein problem dar.
Das ist mit FOR /F realisiert. den Dateinamen kann ich auch herrausfiltern.
Das Problem besteht darin das er am ende des ersten ausgelesenen
Datei-Teils eine neue Datei mit dem nächsten Dateinamen erstellen muss...

Oder besteht die Möglichkeit bestimmte zeilen aus einer Datei zu löschen? Mittels
einer Batchdatei meine ich natürlich?!!

Über weitere hilfen wäre ich sehr sehr dankbar....

mfg
sYntaX
Bitte warten ..
Mitglied: Biber
29.03.2006 um 19:04 Uhr
Moin sYntaX,

wir hatten in "Batch & Shell" schon mal eine recht ähnliche Herausforderung hier Logfile letzten Zeilen in Txt File mit Batch

Ich denke, da sind ein paar Strategien drin - sonst poste bitte noch mal.

Gruß
Biber

P.S. Öhm...ist es denn sinnvoll, diese "große" Datei DAUERHAFT in "Tages"-Dateien oder was auch immer das Kriterium sein mag zu splitten?
Du könntest den Batch doch auch so konzipieren, dass er mit der Syntax "ExtractFromTxt AnfangsKrit [EndeKriterium]" arbeitet? Und erst dann, wenn einer fragt, die Daten vom 27.9. extrahiert auf Bildschirm oder Datei?
Bitte warten ..
Mitglied: sYntaX
30.03.2006 um 09:51 Uhr
Danke schon mal für die Antwort. Ich werde mich wenn ich gleich Zeit habe mal
mit der anderen herrausforderung beschäftigen. Vielleicht kann ich da ja ein paar
Tricks für mich rausholen;D

Zu deiner frage:
Wir bekommen diese Dateien so zugeschickt.Lässt sich leider net ändern
Zu weiteren Bearbeitung muss diese Datei in die einzelnen Dateien gesplittet werden.
Das Ursprungsfile ist Quasi nur ein DateiContainer der einzelne Dateien enthält
(und Ihren ursprünglichen Dateinamen)
die durch einen bestimmten header voneinander getrennt sind.
mir ist grad mal ne Idee gekommen. Wenn ich eine Lösung für mein problem gefunden habe
werde ich es mal posten.

merci&Cya
sYntaX
Bitte warten ..
Mitglied: sYntaX
05.04.2006 um 10:05 Uhr
Also ich habe mein Problem mit dem einen oder anderen Umweg gelöst.
Es ist wahrscheinlich nicht die sauberste Lösung für das Problem, aber eine definitiv funktionierende:

@echo off & setlocal EnableDelayedExpansion
set dname=
echo Bitte geben Sie den Dateinamen ein:
echo.
set /P dname=
set counter=0
set anzahl=0
for /F "tokens=1* delims=" %%a IN (%dname%) DO (
echo %%a >> !counter!.txt
echo %%a >> temp.tmp
for /F "tokens=1,2* delims=+" %%i IN (temp.tmp) DO (
if %%i=='UNZ (
echo !anzahl!.txt >> anzahl.tmp
set /a counter=counter+1
set /a anzahl=anzahl+1
)
del temp.tmp
)
)
set /a anzahl=anzahl-1
for /F %%y IN (anzahl.tmp) DO (
for /F "tokens=1,2*" %%m IN (%%y) DO (
if %%m==ID: (
rename %%y %%n
)
)
)
del anzahl.tmp
endlocal
cls
Echo Folgende Dateien wurden erstellt:
Echo.
dir /B *.DAT




Wenn es jemanden interessiert würde ich die einzelnen zeilen auch kommentieren.
jetzt muss ich aber erst mal auf der Arbeit meine 7 Sachen packen.
ein Abteilungswechsel steht an;D

mfg
sYntaX
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Mit Batch Datei nach Ordner benennen indem sie sich befindet? (4)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Datei: PDF Dateien verschieben, umbenennen und löschen (4)

Frage von F0rcehunter zum Thema Batch & Shell ...

Entwicklung
gelöst Verzeichnise sichern mit batch datei (Win10) (13)

Frage von Limbach zum Thema Entwicklung ...

Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(1)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Windows 10
Windows 10 Home "Netzlaufwerk nicht bereit" (11)

Frage von Oggy01 zum Thema Windows 10 ...

SAN, NAS, DAS
+100tb Storagelösung (10)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...