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, 13072 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

Mit freundlichen Grüßen
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....

Mit freundlichen Grüßen
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

Mit freundlichen Grüßen
sYntaX
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

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 ...