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
GELÖST

Brauche ein Script um einfache Textdateien zusammenzufuegen

Frage Entwicklung Java

Mitglied: concertlive

concertlive (Level 1) - Jetzt verbinden

15.06.2008, aktualisiert 23:53 Uhr, 6712 Aufrufe, 6 Kommentare

Folgendes Problem:

möchte Textdatein zusammenfügen und dabei den Inhalt etwas umbenennen - wer wüßte ein Programm das sowas macht .... oder könnte mir mit einem Script hierzu weiterhelfen?

Folgendes Problem:

möchte Textdatein zusammenfügen und dabei den Inhalt etwas umbenennen - wer wüßte ein Programm das sowas macht .... oder könnte mir mit einem Script hierzu weiterhelfen?


Ausgangssituation:

habe Text-Dateien die folgendermaßen aufgebaut sind:


Namen der Dateien:

15060950.stx
15061010.stx
etc.

dabei sind die ersten 4 Zahlen Datum und Uhrzeit 15060950 = 15.06. 09:50 Uhr (also: ddmmhhmm)



der Inhalt der Textdateien sind Pfade zu Dateien:

zb.: Inhalt von Datei 15060950.stx

C:\Daten\Ordner1\datei-1.cat
C:\Daten\Ordner2\datei-2.cat
C:\Daten\Ordner3\datei-3.cat


zb.: Inhalt von DAtei 15061010.stx

C:\Daten\Ordner4\datei-4.cat
C:\Daten\Ordner5\datei-5.cat
C:\Daten\Ordner6\datei-6.cat



nun möchte ich die Dateien und deren Inhalte folgendermaßen zusammenfügen - in eine Datei mit neuem Namen, der alle Dateien mit gleichem Datum von oben zusammenfasst, die Pfade sollen dann chronologisch untereinander geschrieben werden:

neue Name: 150608t1.log (bedeutet: 15.06.08 und zusätzlich die benötigte Ergänzung t1.log )

dabei soll die neue Datei so aufgebaut sein:


die Uhrzeit soll vorangestellt werden und belegt die Position 1-5, danach 4 Leerzeichen, danach ab Position 10 der Dateiname ohne Pfadangabe und ohne Dateiendung:


09:50 datei-1
09:50 datei-2
00:50 datei-3
10:10 datei-4
10:10 datei-5
10:10 datei-6
etc.


... dieser Vorgang sollte automatisch laufen / oder wir manuell angestoßen und sodass man die täglich anfallenden Einzeldateien zu einer Tagesatei zusammenfasst / wünschenswert wäre die Möglichkeit auf Details Zugriff zu haben, wenn man mal wieder etwas ändern mächte ... zb. Pfade etc. (ich denke ein script dessen code ersichtlich ist würde diesen Zugriff bei Bedarf gestatten)


Ein ganz herzliches Dankeschön erstmal für jede Hilfe ... gerne würde ich auch nochmals nähere Beschreibungen telefonisch geben.

Matthias

[Edit Biber] Von "Java" nach "Batch und Shell" verschoben. [/Edit]
Mitglied: bastla
15.06.2008 um 20:36 Uhr
Hallo concertlive und willkommen im Forum!

Da Du nach einem "Programm oder Script" fragst, könnte ich Dir, obwohl Du den Bereich "Java" gewählt hast, einen Batch anbieten:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner mit stx-Dateien" 
03.
set "QTyp=stx" 
04.
set "Ziel=D:\Ordner mit log-Dateien" 
05.
set "ZTyp=t1.log" 
06.
set Jahr=08 
07.
 
08.
if not exist "%Ziel%" md "%Ziel%" 
09.
for /f "delims=" %%i in ('dir /b /on "%Quelle%\*.%QTyp%"') do call :ProcessFile "%Quelle%\%%i" 
10.
goto :eof 
11.
 
12.
:ProcessFile 
13.
set "Name=%~n1" 
14.
set "Tag=%Name:~,4% 
15.
set "Std=%Name:~4,2% 
16.
set "Min=%Name:~6,2% 
17.
for /f "usebackq delims=" %%d in (%1) do (echo %Std%:%Min%    %%~nd)>>"%Ziel%\%Tag%%Jahr%%ZTyp%" 
18.
goto :eof
Voraussetzung für das Funktionieren ist, dass im Quelldateinamen Tag, Monat, Stunde und Minute immer zweistellig geschrieben sind, da auf dieser Basis im Unterprogramm ":ProcessFile" die Zerlegung des Dateinamens (%~n1) in die einzelnen Bestandteile erfolgt.

Die Angabe des Jahres könnte zwar auch variabel erfolgen, aber da mir die näheren Umstände der Ausführung (Zusammenfassung der Einzeldateien noch am selben Tag, am nächsten Tag, einmal in der Woche / im Monat - wäre übrigens mit dem geposteten Lösungsvorschlag möglich) nicht bekannt sind, wird das Jahr als Konstante festgelegt.

Zu überlegen wäre übrigens auch noch, was mit den Quelldateien geschehen soll, nachdem die Inhalte in die Zieldatei übernommen wurden (in der derzeitigen Fassung wird bei der nächsten Ausführung des Scripts die entsprechende Zieldatei um die Daten der dann - noch - vorhandenen Quelldateien des jeweiligen Tages ergänzt), bzw, ob die Zieldatei bei jedem Start des Scripts neu (aus allen dann vorhandenen Quelldateien) erstellt werden soll - dann könnten die Quelldateien auch unverändert erhalten bleiben.

Grüße
bastla
Bitte warten ..
Mitglied: concertlive
15.06.2008 um 21:51 Uhr
hallo bastla,

nach dem ersten test bin ich schier vom hocker gefallen !!! das hast Du genial gemacht ... und ich dachte schon aus meiner beschreibung wird niemand klar ... einfach super !!

anfangs gab es noch probleme, da bei rauskopieren von hier noch leerzeichen drin waren und die werden 1:1 übernommen .. hab es aber gleich gemerkt und wieder angepaßt ..

der konvert soll ca. täglich angestoßen werden - aber das mit dem Jahr als konstante ist ja kein großes problem ... einen jahreswechsel haben wir alle 365 tage und dann schreibt man einfach ein 2009er-script mit eingefügter 09

alte quelldateien lösche ich von zeit zu zeit weg ... und dass das script über die neuen (sprich zukünftigen) immer wieder drübergeht ist OK ... es könnten sich ja daten verändert haben oder neue quelldaten zu anderen zeiten pro tag hinzugekommen sein ....

eine bitte vielleicht noch weil der code mir doch etwas "spanisch" ist:

wie würde es aussehen wenn das sceipt an der stelle 10 in der zieldatei doch den ganzen pfad der datei schreibt, bloß die dateiendung .cat in die endung .dxx austauscht?

Ansonsten nochmals: vielen vielen DANK Dir

Matthias
Bitte warten ..
Mitglied: bastla
15.06.2008 um 22:06 Uhr
Hallo concertlive!

wie würde es aussehen wenn das sceipt an der stelle 10 in der zieldatei doch den ganzen pfad der datei schreibt, bloß die dateiendung .cat in die endung .dxx austauscht?
Die Zeile 17 würde sich ändern auf
01.
for /f "usebackq delims=" %%d in (%1) do (echo %Std%:%Min%    %%~dpnd.dxx)>>"%Ziel%\%Tag%%Jahr%%ZTyp%" 
Anstelle nur des Namens ("%%~nd") wird mit "%%~dpnd" auch "drive" und "path" mit ausgegeben (und die neue Endung hinzugefügt).

alte quelldateien lösche ich von zeit zu zeit weg ... und dass das script über die neuen (sprich zukünftigen) immer wieder drübergeht ist OK ... es könnten sich ja daten verändert haben oder neue quelldaten zu anderen zeiten pro tag hinzugekommen sein ....
Wenn die bereits übernommenen Dateien beim nächsten Start des Scripts noch vorhanden sind, wirst Du deren Inhalte doppelt in der Zieldatei vorfinden - insofern wäre es vielleicht sinnvoll, die ".stx"-Dateien zb durch das Hinzufügen eines ".done" an den Dateinamen als "verarbeitet" zu kennzeichnen, ohne sie sofort löschen oder verschieben zu müssen - soferne eine bereits erstellte ".stx"-Datei nachträglich nicht nochmals (durch das erstellende Programm) verändert wird, wäre dies ein gangbarer Weg.

Falls Du das Umbenennen testen möchtest, füge nach Zeile 17 noch hinzu:
01.
ren %1 "%~1.done">nul
Grüße
bastla
Bitte warten ..
Mitglied: concertlive
15.06.2008 um 22:41 Uhr
hallo bastla,

komplette pfade + andere Dateiendung klappt!

bloß:
bei ren %1 "%~1.done">nul kommt syntaxfehler ... und geht somit nicht - irgendwas ist da noch faul.....

aber die idee ist gut - habe tatsächlich bemerkt dass er am ende der datei beim erneuten ausführen des scripts wieder alles reinschreibt/hinzufügt (was nicht sein darf) - aber da die stx-dateien nur in eine richtung erstellt werden und vom erstellenden programm nicht gelesen werden, können diese gerne umbenannt werden ... oder gar gelöscht ... (wäre vielleicht gut beides in der schublade zu haben )


nochmals verbindlichsten Dank
Bitte warten ..
Mitglied: bastla
15.06.2008 um 22:52 Uhr
Hallo concertlive!

Nochmals als vollständige Version:
01.
@echo off & setlocal 
02.
set "Quelle=D:\Ordner mit stx-Dateien" 
03.
set "QTyp=stx" 
04.
set "Ziel=D:\Ordner mit log-Dateien" 
05.
set "ZTyp=t1.log" 
06.
set Jahr=08 
07.
 
08.
if not exist "%Ziel%" md "%Ziel%" 
09.
for /f "delims=" %%i in ('dir /b /on "%Quelle%\*.%QTyp%" 2^>nul') do call :ProcessFile "%Quelle%\%%i" 
10.
goto :eof 
11.
 
12.
:ProcessFile 
13.
set "Name=%~n1" 
14.
set "Tag=%Name:~,4% 
15.
set "Std=%Name:~4,2% 
16.
set "Min=%Name:~6,2% 
17.
for /f "usebackq delims=" %%d in (%1) do (echo %Std%:%Min%    %%~dpnd.dxx)>>"%Ziel%\%Tag%%Jahr%%ZTyp%" 
18.
ren %1 "%~nx1.done" 
19.
::del %1 
20.
goto :eof
Umbenennen sollte jetzt auch klappen (hatte vorher beim neuen Dateinamen noch den Pfad dabei, jetzt wird nur noch Name und Extension sowie der Zusatz ".done" verwendet), und wenn Du tatsächlich löschen willst, kannst Du anstelle der "ren"-Zeile (18) die "del"-Zeile (19) verwenden - mit "::" am Beginn der Zeile wird diese auskommentiert, sodass Du die Doppelpunkte nur in die jeweils nicht benötigte Zeile setzen musst.

Grüße
bastla
Bitte warten ..
Mitglied: concertlive
15.06.2008 um 23:53 Uhr
bastla es ist ein traum !!

Dein Script ist GENIAL ....

Danke Dir tausendmal ...

Es ist super nett dass Du Dir die Zeit und die Mühe genommen hast .... ich hoffe das Du hier noch ebensoviel Hilfe für eventuelle Fragen deinerseits bekommast !!

Liebe Grüße
Matthias
Bitte warten ..
Ähnliche Inhalte
Windows Server
Hilfe bei einfachem Powershell Copy-Script
gelöst Frage von pcpanikWindows Server8 Kommentare

Halo zusammen, ich habe leider keine Powershell Erfahrung, brauche aber nun ein Script, welches ich per Taskplaner 1x/Monat ausführen ...

Batch & Shell
Einfaches SendMail-Script läuft auf Fehler
Frage von LarzBatch & Shell3 Kommentare

Hallo zusammen, zunächst einmal - ich habe mit Powershell bisher keine Erfahrungen und mir immer mit Batch und blat.exe ...

Batch & Shell
Bearbeitung einer Textdatei mittels cmd-Script
Frage von alexander01Batch & Shell8 Kommentare

Hallo, kann mir ein Tüfftler bei der Erstellung eines Scriptes helfen? Ich möchte mittels cmd-Script eine Datei bearbeiten, die ...

Batch & Shell
Brauche Hilfe mit einem Batch Script( or condition)
Frage von fireskyerBatch & Shell21 Kommentare

Hallo Ich habe ne Frage bezüglich einem Batch Script: Das Script soll ein Programm Killen und dann abfragen, wo ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 4 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 11 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 13 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 16 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...