Batch Befehl zum Sortieren von Dateien nach ihrem erstellungsdatum gesucht
Hallo Leute,
Ich bräucht eure Hilfe.
Und zwar suche ich einen Batch Befehl (.bat Datei) der bestimmte Dateien aus einem Sammelordner nach ihrem Datum sortiert, also genaugenommen nach ihrem Monat (Erstellungsdatum).
Diese Dateien sollen dann in einen Ordner kopiert werden, welcher Unterordner mit allen Monaten enthält.
Also z.b. eine Datei die am 04.02.2007 erstellt wurde soll dann erkannt werden und in den Ordner C:\2007\02 verschoben werden, eine Datei die am 04.05.2007 erstellt wurde wird dann in den Ordner C:\2007\05 kopiert.
Ich habe leider bisher null Erfahrung was solche batch Dateien anbetrifft, also es wäre sehr nett, wenn ihr es so unkompliziert wie möglich formulieren könntet ^^
Ich habe das Forum schon vor erstellen des Beitrages durchsucht nur leider habe ich keinen Beitrag gefunden, den ich verstanden habe und konnte daher auch nicht sicher sein ob es sich um das gleiche Problem wie meines handelt.
Vielen Dank im Vorraus...
MfG Dragon
Ich bräucht eure Hilfe.
Und zwar suche ich einen Batch Befehl (.bat Datei) der bestimmte Dateien aus einem Sammelordner nach ihrem Datum sortiert, also genaugenommen nach ihrem Monat (Erstellungsdatum).
Diese Dateien sollen dann in einen Ordner kopiert werden, welcher Unterordner mit allen Monaten enthält.
Also z.b. eine Datei die am 04.02.2007 erstellt wurde soll dann erkannt werden und in den Ordner C:\2007\02 verschoben werden, eine Datei die am 04.05.2007 erstellt wurde wird dann in den Ordner C:\2007\05 kopiert.
Ich habe leider bisher null Erfahrung was solche batch Dateien anbetrifft, also es wäre sehr nett, wenn ihr es so unkompliziert wie möglich formulieren könntet ^^
Ich habe das Forum schon vor erstellen des Beitrages durchsucht nur leider habe ich keinen Beitrag gefunden, den ich verstanden habe und konnte daher auch nicht sicher sein ob es sich um das gleiche Problem wie meines handelt.
Vielen Dank im Vorraus...
MfG Dragon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52650
Url: https://administrator.de/forum/batch-befehl-zum-sortieren-von-dateien-nach-ihrem-erstellungsdatum-gesucht-52650.html
Ausgedruckt am: 18.04.2025 um 21:04 Uhr
11 Kommentare
Neuester Kommentar
Moin,
so müsst es gehen. Vielleicht kann man das einfacher machen, aber so müsst es gehen:
Ich habe es nicht mit verschieben probiert, sondern nur mit eine ECHO Ausgabe.
Grüße
Dani
so müsst es gehen. Vielleicht kann man das einfacher machen, aber so müsst es gehen:
@echo off
for /f "tokens=1,4* delims= " %%a in ('dir /od "D:\Musik"') do (
for /f "tokens=1,2,3 delims=." %%i in ('echo %%a') do (
move "D:\Musik\%%b%%c" "C:\%%k-%%j" /y
)
)
Grüße
Dani
Moin Dragonrb,
willkommen im Forum.
Für Deinen Plan brauchst Du eigentlich nur einen neuen Zielordner und zwei Anweisungen vom CMD-Prompt.
Da es erstmal eine einmalige (und keine wiederkehrende) Aufgabe ist, würde ich keinen Batch dafür zusammentrümmern, sondern mich langsam und interaktiv daran herantrauen.
Den ersten Befehl brauchst Du, um alle nötigen Unterverzeichnisse anzulegen, den zweiten zum Verschieben der Dateien.
Annahmen:
- du kennst das Quell-Verzeichnis, aus dem Du die Daten verschieben/wegsortieren willst
- einen sinnvollen Namen für das Zielverzeichnis kennst Du auch.
Dann am CMD-Prompt (Beispiel:Quelle ist "f:\temp"; Ziel ist "X:\SortiertesGeraffel"):
Beide Beispielzeilen enthalten ein @echo, welches das gefahrlose Testen/Simulieren ermöglicht.
Dieses "@Echo" muss weggelassen werden, wenn die Anweisung das gewünschte Ergebnis anzeigt und die Anweisung wirklich ausgeführt werden soll.
HTH
Biber
willkommen im Forum.
Für Deinen Plan brauchst Du eigentlich nur einen neuen Zielordner und zwei Anweisungen vom CMD-Prompt.
Da es erstmal eine einmalige (und keine wiederkehrende) Aufgabe ist, würde ich keinen Batch dafür zusammentrümmern, sondern mich langsam und interaktiv daran herantrauen.
Den ersten Befehl brauchst Du, um alle nötigen Unterverzeichnisse anzulegen, den zweiten zum Verschieben der Dateien.
Annahmen:
- du kennst das Quell-Verzeichnis, aus dem Du die Daten verschieben/wegsortieren willst
- einen sinnvollen Namen für das Zielverzeichnis kennst Du auch.
Dann am CMD-Prompt (Beispiel:Quelle ist "f:\temp"; Ziel ist "X:\SortiertesGeraffel"):
----zuerst die Ordner anlegen----
(=10:37:32 D:\temp=)
>for %i in (f:\temp\*.*) do @for /f "tokens=2-3 delims=. " %a in ("%~ti") do @if not exist x:\SortiertesGeraffel\%b\%a <b>@ECHO</b> md x:\SortiertesGeraffel\%b\%a
md x:\SortiertesGeraffel\2006\08
md x:\SortiertesGeraffel\2006\09
md x:\SortiertesGeraffel\2006\10
md x:\SortiertesGeraffel\2006\12
.....
--- dann die Dateien MOVEn...
for %i in (f:\temp\*.*) do @for /f "tokens=2-3 delims=. " %a in ("%~ti") do <b>@ECHO</b> move "%~fi" x:\SortiertesGeraffel\%b\%a\*.*
move "f:\temp\Q0rdner.txt" x:\SortiertesGeraffel\2006\08\*.*
move "f:\temp\Sourcepath.txt" x:\SortiertesGeraffel\2006\10\*.*
move "f:\temp\hbci201a.doc" x:\SortiertesGeraffel\2006\12\*.*
....
Beide Beispielzeilen enthalten ein @echo, welches das gefahrlose Testen/Simulieren ermöglicht.
Dieses "@Echo" muss weggelassen werden, wenn die Anweisung das gewünschte Ergebnis anzeigt und die Anweisung wirklich ausgeführt werden soll.
HTH
Biber
Sorry, Dragonrb,
das hätte ich natürlich auch deutlicher machen können...
Ja, das Größer-(">")-Zeichen sollte den CMD-Prompt andeuten und nicht mit eingegeben werden.
Ja, die Zeilen darunter sind die Outputzeilen, die in meiner Testumgebung rausfallen würden.
Ja, die beiden Zeilen könntest Du natürlich auch, statt die so per Copy & Paste am CMD-Prompt einzufügen, in eine Bat-Datei schreiben, wenn die beiden Einzelzeilen im Test denn das machen, was Du willst.
Einzige wesentliche Änderung: im Batch sind vor den Zählvariablen %i, %j usw zwei Prozentzeichen statt einem am CMD-Prompt.
Als Batch könnte das Ganze sinngemäß (das heißt: Deine Pfade und Laufwerke sind natürlich nicht drin, die kennst nur Du) so aussehen:
-oder etwas kürzer:
[Ungetestete Skizze]
Kannst Du Dir in den Autostart legen oder auf den Desktop... aber halt erst, wenn es getestet ist und fliegt.
Gruss
Biber
das hätte ich natürlich auch deutlicher machen können...
Ja, das Größer-(">")-Zeichen sollte den CMD-Prompt andeuten und nicht mit eingegeben werden.
Ja, die Zeilen darunter sind die Outputzeilen, die in meiner Testumgebung rausfallen würden.
Ja, die beiden Zeilen könntest Du natürlich auch, statt die so per Copy & Paste am CMD-Prompt einzufügen, in eine Bat-Datei schreiben, wenn die beiden Einzelzeilen im Test denn das machen, was Du willst.
Einzige wesentliche Änderung: im Batch sind vor den Zählvariablen %i, %j usw zwei Prozentzeichen statt einem am CMD-Prompt.
Als Batch könnte das Ganze sinngemäß (das heißt: Deine Pfade und Laufwerke sind natürlich nicht drin, die kennst nur Du) so aussehen:
::---------snipp SortierMirInMonatsOrdner.bat ----
@echo off & setlocal
::---ab hier anpassen
Set "QuellDirFiles=F:\Temp\*.*"
Set "ZielDirRoot=X:\SortiertesGeraffel"
::---bis hier anpassen
:: Monatsordner anlegen, wenn nötig
for %%i in (%QuellDirFiles%) do (
for /f "tokens=2-3 delims=. " %%a in ("%%~ti") do @if not exist "%ZielDirRoot%\%%b\%%a" md "%ZielDirRoot%\%%b\%%a"
)
:: --- dann die Dateien MOVEn...
for %%i in (%QuellDirFiles%) do @for /f "tokens=2-3 delims=. " %%a in ("%%~ti") do move "%%~fi" "%ZielDirRoot%\%b\%a\*.*"
::---------snapp SortierMirInMonatsOrdner.bat ----
-oder etwas kürzer:
::---------snipp SortierMirInMonatsOrdner.bat ----
@echo off & setlocal
::---ab hier anpassen
Set "QuellDirFiles=F:\Temp\*.*"
Set "ZielDirRoot=X:\SortiertesGeraffel"
::---bis hier anpassen
:: Monatsordner anlegen, wenn nötig und dann die Dateien MOVEn...
for %%i in (%QuellDirFiles%) do for /f "tokens=2-3 delims=. " %%a in ("%%~ti") do (
if not exist "%ZielDirRoot%\%%b\%%a" md "%ZielDirRoot%\%%b\%%a"
move "%%~fi" "%ZielDirRoot%\%b\%a\*.*"
)
::---------snipp SortierMirInMonatsOrdner.bat ----
Kannst Du Dir in den Autostart legen oder auf den Desktop... aber halt erst, wenn es getestet ist und fliegt.
Gruss
Biber
Moin Dragonrb,
Und zu dieser Übersetzung von eher tristen Datumswerten in etwas flüssig Lesbares könnte ich stundenlang erzählen.
Hab ich sogar schon getan hier im Forum - einiges davon davon steht z.B. in dem Tutorial ,
dem zweiten Link unten in "Beiträge im gleichen Bereich".
Wenn Du Dir das mal gemütlich mit einer Tüte Erdnussflips und einem Glas nicht zu fruchtigen Dornfelder reinziehst, solltest Du danach in der Lage sein,
- FOR-Anweisungen mit mehreren Zählvariablen mit spielerischer Leichtigkeit ineinander zu schrauben,
- die Monatswerte "01" bis "12" durch die Monatsnamen "Jänner" bis "Dezember" zu ersetzen,
- Deine Musterlösung hier zu veröffentlichen und
- einen grünen Haken an diesen Thread zu heften.
Würde mir eine größere Freude bereiten, als Dir hier eine maßgeschneiderte Fertiglösung unterzujubeln, die Du dann nur teilweise nachvollziehen kannst.
Vorschlag: Versuch es einmal anhand dieses Tutorials zu lösen... sollte es dann klemmen, findest Du natürlich hier weitere Hilfe (zur Selbsthilfe).
Gruss
Biber
Bestünde eigentlich auch die Möglichkeit...
Och, Batchskripte bieten eigentlich fast unbegrenzte Möglichkeiten. Meiner Erfahrung nach...Und zu dieser Übersetzung von eher tristen Datumswerten in etwas flüssig Lesbares könnte ich stundenlang erzählen.
Hab ich sogar schon getan hier im Forum - einiges davon davon steht z.B. in dem Tutorial ,
dem zweiten Link unten in "Beiträge im gleichen Bereich".
Wenn Du Dir das mal gemütlich mit einer Tüte Erdnussflips und einem Glas nicht zu fruchtigen Dornfelder reinziehst, solltest Du danach in der Lage sein,
- FOR-Anweisungen mit mehreren Zählvariablen mit spielerischer Leichtigkeit ineinander zu schrauben,
- die Monatswerte "01" bis "12" durch die Monatsnamen "Jänner" bis "Dezember" zu ersetzen,
- Deine Musterlösung hier zu veröffentlichen und
- einen grünen Haken an diesen Thread zu heften.
Würde mir eine größere Freude bereiten, als Dir hier eine maßgeschneiderte Fertiglösung unterzujubeln, die Du dann nur teilweise nachvollziehen kannst.
Vorschlag: Versuch es einmal anhand dieses Tutorials zu lösen... sollte es dann klemmen, findest Du natürlich hier weitere Hilfe (zur Selbsthilfe).
Gruss
Biber
Moin Dragonrb,
eine Skizze wäre so:
[ungetestete Skizze]
Gruss Biber
eine Skizze wäre so:
:: Dies ist eine .bat Datei zum Scannen eines Quellordners nach Dateien mit unterschiedlichem Erstellungsdatum um Sie einheitlich zu sortieren.
:: Diese Dateien werden dann geordnet nach dem Monat Ihrer Erstellung und dem dazugehörigen Jahr in einen seperaten Ordner namens "Akalf" verschoben.
@Echo off & Setlocal
:: Festlegen der Variablen für Quell und Zielverzeichniss...
Set "QuellDirFiles=C:\Temp\*.*"
Set "ZielDirRoot=C:\Akalf"
:: Erstellen der Ordner Anhand des Erstellungsdatums aller Dateien...
for %%i in (%QuellDirFiles%) do (
for /f "tokens=2-3 delims=. " %%a in ("%%~ti") do Call :Move2XLatedMonthFolder "%%~fi" %%b %%a
)
goto :eof
:Move2XLatedMonthFolder
REM Parameter %1="FQ-Quelldateiname"
REM Parameter %2: JJ-Jahr; Parameter3:MM-Monat
If [%3]==[01] set "cMonat=Januar"
If [%3]==[02] set "cMonat=Februar"
If [%3]==[03] set "cMonat=Märzen"
If [%3]==[04] set "cMonat=April"
If [%3]==[05] set "cMonat=Meiomei"
If [%3]==[06] set "cMonat=Juno"
If [%3]==[07] set "cMonat=Juli"
If [%3]==[08] set "cMonat=August"
If [%3]==[09] set "cMonat=September"
If [%3]==[10] set "cMonat=Oktober"
If [%3]==[11] set "cMonat=November"
If [%3]==[12] set "cMonat=Dezember"
if not exist "%ZielDirRoot%\20%2\%cMonat%" md "%ZielDirRoot%\20%2\%cMonat%"
:: Verschieben dieser Dateien...
move %1 "%ZielDirRoot%\20%2\%cMonat%"
goto :eof
Gruss Biber
*lacht*
@Dragonrb
- Anmelden
- unterhalb der Frage, mit der Du diesen Beitrag begonnen hast, den Button "Editieren" drücken
- Im aufgehenden Fensterchen unterhalb des Beitragstext-Editors das Kontrollkästchen "Dieser Beitrag gillt als gelöst" aktivieren/ankreuzen.
[Und wenn es der Beitragsersteller auf "Gelöst" gesetzt hat, kommt irgendwann der Mod/die Modöse/das Model und setzt den Beitrag nach dem selben Muster auf "Geschlossen".]
Schönen Tag auch Dir
Biber
@Dragonrb
Beitrag als gelöst markieren/Grünes Häkchen setzen
- Anmelden
- unterhalb der Frage, mit der Du diesen Beitrag begonnen hast, den Button "Editieren" drücken
- Im aufgehenden Fensterchen unterhalb des Beitragstext-Editors das Kontrollkästchen "Dieser Beitrag gillt als gelöst" aktivieren/ankreuzen.
[Und wenn es der Beitragsersteller auf "Gelöst" gesetzt hat, kommt irgendwann der Mod/die Modöse/das Model und setzt den Beitrag nach dem selben Muster auf "Geschlossen".]
Schönen Tag auch Dir
Biber