Per Batch - Datum als Ordnername (Datiensortierung in Datumsordner)
Lange ist es her, dass ich mit Batches gearbeitet habe.
Jetzt hab ich ein Problem zu loesen, dass mir viel manuelle Arbeit ersparen koennte.
Ich fand folgende aehnliche Artikel, komme damit jedoch nicht weiter!
--> "Erstellungsdatum auslesen und als neuen Dateinamen verwenden"
--> "Erstellungsdatum einer Datei per Batch auswerten?"
--> "Batch - Dateien mit Ordnernamen umbenennen"
Bisher hab ich die oben genannten Artikel versucht zu mergen, bin allerdings klaeglich gescheitert.
Nachdem ich allerdings heute bei dem schoenen Wetter den halben Sonntag verbracht habe,
ein Script zu basteln, wende ich mich an euch mit einem Hilferuf!
Ich suche eine Batch-Lösung, die sämtliche Dateien in einem Order (variabel: c:\temp\) nach Erstellungsdatum ausliest,
nach einem bestehendem Unterordner (YYYYMMDD*) im Ordner (d:\archiv\) sucht,
diesen Ordner basierend auf dem Erstellungsdatum der jeweiligen Datei erstellt, wenn noch nicht vorhanden (YYYYMMDD),
und die Dateien in die jeweiligen Ordner verschiebt.
Ich habe jeweils 1 bis x Dateien mit gleichem Datum und unterschiedlichen Zeiten und Datienamen in dem Ausgangsfolder.
Die Unterordner in d:\archiv\ werden später manuell erweitert (Bsp.: 20080315 Logfiles oder ... Mails Privat, etc.),
enthalten allerdings immer das Datum am Beginn.
Falls eine Datei nicht verschoben werden kann (weil zum Bsp. schon in einem Ordner mit dem entsprechenden Datum vorhanden), soll sie uebersprungen werden und bleibt im urspruenglichen Ordner bestehen.
Wie müsste so eine Batch aussehen?
Vielen Dank fuer eure Hilfe!
nach einem bestehendem Unterordner (YYYYMMDD*) im Ordner (d:\archiv\) sucht,
diesen Ordner basierend auf dem Erstellungsdatum der jeweiligen Datei erstellt, wenn noch nicht vorhanden (YYYYMMDD),
und die Dateien in die jeweiligen Ordner verschiebt.
Ich habe jeweils 1 bis x Dateien mit gleichem Datum und unterschiedlichen Zeiten und Datienamen in dem Ausgangsfolder.
Die Unterordner in d:\archiv\ werden später manuell erweitert (Bsp.: 20080315 Logfiles oder ... Mails Privat, etc.),
enthalten allerdings immer das Datum am Beginn.
Falls eine Datei nicht verschoben werden kann (weil zum Bsp. schon in einem Ordner mit dem entsprechenden Datum vorhanden), soll sie uebersprungen werden und bleibt im urspruenglichen Ordner bestehen.
Wie müsste so eine Batch aussehen?
Vielen Dank fuer eure Hilfe!
Please also mark the comments that contributed to the solution of the article
Content-Key: 91397
Url: https://administrator.de/contentid/91397
Printed on: April 19, 2024 at 23:04 o'clock
4 Comments
Latest comment
Versuchs mal damit:
Es wird erstmal nur angezeigt was pasiert. Wenn alles so funktioniert wie du willst dann entferne die "ECHO"s einfach
@echo off
set "quelldir=c:\temp"
set "zieldir=d:\archiv"
FOR /F "delims=" %%i in ('dir /A-D /B "%quelldir%"') do FOR /F "tokens=1-3 delims=. " %%a in ('echo %%~ti') do (
dir "%zieldir%\%%c%%b%%a*\" >NUL 2>NUL || ECHO md "%zieldir%\%%c%%b%%a\" >NUL
if not exist "%zieldir%\%%c%%b%%a*\%%~nxi" ECHO move "%%i" "%zieldir%\%%c%%b%%a\%%~nxi"
)
Es wird erstmal nur angezeigt was pasiert. Wenn alles so funktioniert wie du willst dann entferne die "ECHO"s einfach
@miniversum
Vielleicht besser als Zeile 5:
Außerdem wird
wegen des "*" nicht funktionieren ...
Grüße
bastla
Vielleicht besser als Zeile 5:
for /f "delims=" %%i in ('dir /a-d /b "%quelldir%"') do for /f "tokens=1-3 delims=. " %%a in ('dir /tc "%quelldir%\%%i"^|findstr /c:"%%i"') do (
if not exist "%zieldir%\%%c%%b%%a*\%%~nxi"
Grüße
bastla