Jede Nacht muss ich arbeiten an einem Ordner 36 Tage alt vom aktuellen Datum. Ich habe ein System, das Dateien in eine tägliche Struktur wie folgt schreibt. Ich muss 35 Tage auf der lokalen Festplatte halten und so muss ich jede Nacht den 36. Tag archivieren. Hier ist der Kicker ... Es gibt ca. 2 Millionen Dateien pro Tag, so dass ich den gesamten 2009 Ordner nicht effizient scannen kann und nur Dateien älter als 35 Tage verschieben kann. Was ich tun muss, ist, obwohl ein Batch-Skript den Pfad des Ordners, der 36 Tage alt ist, bestimmen und dann meine Archivlogik anwenden. Ich habe Skripte zu bestimmen, aber Schwierigkeiten haben, die Bestimmung zu 36 Tage alt. Im Notfall kann ich Perl verwenden, wenn es keine Batch-Möglichkeit gibt, dies zu tun. --ShawnCMD/BAT - Hilfe bestimmend Datum vor 36 Tagen
Ordnerstruktur ist wie folgt:
2009\07\01
2009\07\02
2009\07\03
.
.
.
2009\08\01
2009\08\02
2009\08\03
@EDIT: Helens große Antwort hat mir 99% des Weges dorthin. Mein einziges Problem ist, dass der Monat und der Tag außerhalb der Vbs nicht mit einer Null aufgefüllt wird, mit der ich in der Ordnerstruktur umgehen muss. Hat jemand eine einfache Möglichkeit, in einer führenden 0 zu puffern, wenn der Tag oder Monat weniger als 10 ist? Hier
ist, was ich bisher tue:
for /F "tokens=1-3 delims=/" %%x in ('cscript //nologo get36thday.vbs') do (
SET YYYY=%%z
SET MM=%%x
SET DD=%%y)
außer% MM% endet als 7 statt 07