telemetriker
Goto Top

Backup - Verzeichnis mit Unterverzeichnissen in Abhängigkeit des Erstellungsdatums der Unterverzeichnisse in Datumsordner verschieben

Viele Telemetriedaten in Abhängigkeit des Erstellungsdatums/letzte Änderung in Datumsverzeichnis verschieben.

Hallo,

ich habe hier schon viel Hilfe gefunden ohne aktiv fragen zu müssen (zunächst mal Danke von einem stillen Mitleser ;o)
...diesmal klappt es leider nicht so.

Ich habe folgende Aufgabenstellung:

Ich betreue ein verteiltes Messsystem (>50 Messgeber), welches selbsttätig gewisse Tests durchführt und diese Telemetriedaten auf einen zentralen Rechner schiebt.
Diese Messdaten werden dann einer Vorverarbeitung unterzogen und ein CSV-File mit den Testergebnissen kommt heraus...

Die Testlogik ist recht gut umgesetzt, nun klemmt es an der Seite, an der die Messdaten anfallen, hier hat der Spezifizierer geschlafen und da steh' ich nun mit GBytes an Daten:


Die Messdaten landen in solch einer Struktur:

C:\APPLIKATION\TestLogs\TEST01\12345467891234\SONDE001#12345467892354#.log (hier liegen mehrere .logs nach diesem Muster)

Mit jedem neuen Testlauf (derzeit ca. 60 am Tag) entsteht unter "TEST1" ein weiteres dir, 12345467894711 (PC-Zeit in ms seit 1.1.1980 oder so)

Ausserdem gibt es noch Test02, Test03,.....usw. (aktuell ca. 20 verschiedene Tests)

Nun soll Ordnung ins Chaos, die schon bestehenden Daten sollen pro Tag in ein Verzeichnis sortiert und verschoben werden,
und zwar abhängig vom Erstellungsdatum des "12345467894711" Verzeichnisses.

C:\MESSDATEN\JJJJ-MM-TT\TestLogs\TEST1\12345467891234\SONDE001#12345467892354.log

(Hoffentlich konnte ich mein Anliegen einigermassen klar schildern ;o)

So würde es als Baum aussehen:

C:\APPLIKATION\TestLogs\
-TEST1\
--12345467894711\ (Erstellungsdatum 2009-03-03)
---SONDE001#12345467896876#1.log
---SONDE001#12345467896876#2.log
---SONDE001#12345467896876#3.log
---SONDE002#12345467892354#1.log
---SONDE002#12345467892354#2.log
---SONDE002#12345467892354#3.log
--12345467890815\ (Erstellungsdatum 2009-03-04)
---SONDE001#12345467834546#1.log
---SONDE001#12345467834546#2.log
---SONDE001#12345467834546#3.log
---SONDE002#12345467892354#1.log
---SONDE002#12345467892354#2.log
---SONDE002#12345467892354#3.log
--123454678xyz usw
-TEST2
-TEST3
- . . .
-TEST20

Soll nach

C:\MESSDATEN\2009-03-03\TestLogs\
-TEST1\
--12345467894711\ (Erstellungsdatum 2009-03-03)
---SONDE001#12345467896876#1.log
---SONDE001#12345467896876#2.log
---SONDE001#12345467896876#3.log
---SONDE002#12345467892354#1.log
---SONDE002#12345467892354#2.log
---SONDE002#12345467892354#3.log
...

C:\MESSDATEN\2009-03-04\TestLogs\
-TEST1\
--12345467890815\ (Erstellungsdatum 2009-03-04)
---SONDE001#12345467834546#1.log
---SONDE001#12345467834546#2.log
---SONDE001#12345467834546#3.log
---SONDE002#12345467892354#1.log
---SONDE002#12345467892354#2.log
---SONDE002#12345467892354#3.log
...

Und das Ganze für >80.000 dieser Logfiles


Hat jemand eine Lösung? Habe Mit Robocopy angefangen, scheitere jedoch an den Datumsordnern,
die gemäss des Erstellungsdatums der "12345467890815" Ordner erstellt werden sollen...

Danke

Telematiker

Content-Key: 118007

Url: https://administrator.de/contentid/118007

Printed on: April 25, 2024 at 07:04 o'clock

Member: bastla
bastla Jun 11, 2009 at 18:39:46 (UTC)
Goto Top
Hallo Telemetriker und willkommen als Mitglied!

Wenn ich das richtig gelesen habe, könnte es etwa so gehen:
@echo off & setlocal

set "Quelle=C:\APPLIKATION"  
set "Unterordner=TestLogs\TEST1"  
set "Ziel=C:\MESSDATEN"  

for /f "skip=2 tokens=1-3,5* delims=. " %%a in ('dir /ad /tc "%Quelle%\%Unterordner%"^|findstr "<DIR>"') do (  
    if not exist "%Ziel%\%%c-%%b-%%a\%Unterordner%\" md "%Ziel%\%%c-%%b-%%a\%Unterordner%"  
    echo move "%Quelle%\%Unterordner%\%%e" "%Ziel%\%%c-%%b-%%a\%Unterordner%"  
)
Das "echo" vor dem "move" sorgt (zum Testen) dafür, dass der Verschiebebefehl nur angezeigt, aber nicht ausgeführt wird - die Erstellung der Ordnerstruktur im Zielordner wird allerdings bereits vorgenommen.

Soferne die Testergebnisse vernünftig aussehen, einfach das genannte "echo" entfernen.

Grüße
bastla