Per Move 1000 Dateien ins 1. die nächsten 1K ins nächste Verzeichnis usw.
Hallo Experten,
wir haben hier z.Zt. 75000 Dateien die möchte ich in 75 Verzeichnisse verschieben. Es soll keine Sortierung o.a. geben
es sollen die Verzeichnisse 01000 02000 03000 04000 ... 10000 11000 usw erstellt werden und dort dann jeweils
maximal 1000 Dateien rein. ich hoffe ihr habt eine Lösung.
Vielen Dank für eure Hilfe.
wir haben hier z.Zt. 75000 Dateien die möchte ich in 75 Verzeichnisse verschieben. Es soll keine Sortierung o.a. geben
es sollen die Verzeichnisse 01000 02000 03000 04000 ... 10000 11000 usw erstellt werden und dort dann jeweils
maximal 1000 Dateien rein. ich hoffe ihr habt eine Lösung.
Vielen Dank für eure Hilfe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 67893
Url: https://administrator.de/forum/per-move-1000-dateien-ins-1-die-naechsten-1k-ins-naechste-verzeichnis-usw-67893.html
Ausgedruckt am: 22.05.2025 um 14:05 Uhr
10 Kommentare
Neuester Kommentar
Moin zip1928,
willkommen im Forum.
Ist das der ganze Plan oder nur der Teil, den wir wissen müssen?
Hört sich für mich nicht wirklich nach einer zukunftsweisenden Strategie an.
Möchtest Du eventuell darüber reden?
Falls Du Dich auf das rein Handwerkliche beschränken möchtest:
Bitte nicht eingeschnappt sein - handwerklich ist es nicht sonderlich anspruchsvoll.
Aber als Problemlösung erscheint mir das Konzept eher suboptimal.
Grüße
Biber
willkommen im Forum.
Ist das der ganze Plan oder nur der Teil, den wir wissen müssen?
Hört sich für mich nicht wirklich nach einer zukunftsweisenden Strategie an.
Möchtest Du eventuell darüber reden?
Falls Du Dich auf das rein Handwerkliche beschränken möchtest:
- Sicherheitsabfrage: Die 1000er-Pakete weder nach Alphabet noch nach Dateidatum sortiert?!?
- sind Leerzeichen/Sonderzeichen in den Dateinamen oder sind die noch in DOS-8.3-Notation?
Bitte nicht eingeschnappt sein - handwerklich ist es nicht sonderlich anspruchsvoll.
Aber als Problemlösung erscheint mir das Konzept eher suboptimal.
Grüße
Biber
Hallo zip1928!
Versuch es einmal so:
Das Verzeichnis in der zweiten Zeile musst Du natürlich Deinen Gegebenheiten anpassen.
Falls Du übrigens vielleicht doch lieber eine chronologische Reihung hättest, könntest Du die "for"-Zeile so schreiben:
Und, nur zur Sicherheit: Verwende für Deine Tests bitte Kopien und nicht die Originaldaten!
Grüße
bastla
Versuch es einmal so:
@echo off & setlocal
cd /d D:\Daten\P1
set /a Nr=100000
set /a Anzahl=1000
set /a Z=%Anzahl%
for %%i in (*.jpg) do call :ProcessFile "%%i"
goto :eof
:ProcessFile
set /a Z+=1
if %Z% leq %Anzahl% goto :MoveIt
set /a Z=1
set /a Nr+=%Anzahl%
set Verz=%Nr:~1%
md %Verz%
echo %Verz%
:MoveIt
move %1 %Verz%
Falls Du übrigens vielleicht doch lieber eine chronologische Reihung hättest, könntest Du die "for"-Zeile so schreiben:
for /f "delims=" %%i in ('dir /b /od *.jpg') do call :ProcessFile "%%i"
Und, nur zur Sicherheit: Verwende für Deine Tests bitte Kopien und nicht die Originaldaten!
Grüße
bastla
Fußnote für ängstliche Gemüter zu bastlas Lösung:
Wenn wir tatsächlich von ca 75000 Dateinamen mit je ~20+ Zeichen reden, dann könnte es der CMD.exe ein bisschen Stress machen, diese als "virtuelles File" im Hauptspeicher zu halten.
Wir wissen doch alle, dass es unter Windows laufen soll...
Deshalb eventuell statt dieser Variante:
das übervorsichtige Zwischenspeichern in einer temporären, aber real vorhandenen Datei:
BTW, wäre es nicht - wenn diese Bildchen eh schon sortiert, archiviert und nach menschlichem Ermessen nie wieder vorgekramt werden, eine Abspeicherung nach Monatsordnern sinnvoller?
Die Informationen aufgrund der Dateinamen wären ja da...?
Grüße
Biber
Wenn wir tatsächlich von ca 75000 Dateinamen mit je ~20+ Zeichen reden, dann könnte es der CMD.exe ein bisschen Stress machen, diese als "virtuelles File" im Hauptspeicher zu halten.
Wir wissen doch alle, dass es unter Windows laufen soll...
Deshalb eventuell statt dieser Variante:
for /f "delims=" %%i in ('dir /b /od *.jpg') do call :ProcessFile "%%i"
dir /b /od *.jpg>%temp%\AllFiles.lst
for /f "delims=" %%i in (%temp%\AllFiles.lst) do call :ProcessFile "%%i"
del %temp%\AllFiles.lst
BTW, wäre es nicht - wenn diese Bildchen eh schon sortiert, archiviert und nach menschlichem Ermessen nie wieder vorgekramt werden, eine Abspeicherung nach Monatsordnern sinnvoller?
2007-08_P1
2007-08_P2
2007_08_eingangshalle
2007-09_P1
2007-09_P2
2007_09_eingangshalle
Grüße
Biber
@Biber
Das wäre ja ein fast schon unentschuldbarer Verstoß gegen das Prinzip "Wundertüte", und außerdem würdest Du damit dem (fast originalen) Forrest Gump-Zitat: "Ein Verzeichnis (mit 1000 jpg-Files) ist wie eine Schachtel Pralinen - man weiß nie, was man bekommt" doch glatt die Grundlage entziehen ...
Grüße
bastla
... Abspeicherung nach Monatsordnern sinnvoller?
Ich hatte mich ja nach dem nahezu kategorischen "Es soll keine Sortierung o.a. geben" eigentlich kaum getraut, eine zeitliche Ordnung vorzuschlagen, und jetzt sowas.Das wäre ja ein fast schon unentschuldbarer Verstoß gegen das Prinzip "Wundertüte", und außerdem würdest Du damit dem (fast originalen) Forrest Gump-Zitat: "Ein Verzeichnis (mit 1000 jpg-Files) ist wie eine Schachtel Pralinen - man weiß nie, was man bekommt" doch glatt die Grundlage entziehen ...
Grüße
bastla
@bastla
Dann kommt bestimmt die Nachfrage: Wäre das denn ein großer Aufwand, das in Monatsordner wegzukruuschen?"
Aber das warten wir erstmal ab...
Schönen Abend
Biber
Ich hatte mich ja nach dem nahezu kategorischen "Es soll keine Sortierung o.a. geben" eigentlich kaum getraut, eine zeitliche Ordnung vorzuschlagen, und jetzt sowas.
Na ja, warte erst mal ab, wenn er morgen früh stolz das Ergebnis mit je 1000 Dateien in so sprechenden Verzeichnisnamen wie "01000", "02000", "03000" sieht...Dann kommt bestimmt die Nachfrage: Wäre das denn ein großer Aufwand, das in Monatsordner wegzukruuschen?"
Aber das warten wir erstmal ab...
Schönen Abend
Biber
@Biber
Wir wissen ja ohnehin beide, dass Du Recht hast, aber wie hieß es bei Frank Zander (in der "Disco Polka"): Der Wirt will es so.
Bevor mir noch mehr solcher weltbewegender Zitate einfallen, hör ich lieber auf.
Dir auch einen schönen Abend
bastla
Wir wissen ja ohnehin beide, dass Du Recht hast, aber wie hieß es bei Frank Zander (in der "Disco Polka"): Der Wirt will es so.
Bevor mir noch mehr solcher weltbewegender Zitate einfallen, hör ich lieber auf.
Dir auch einen schönen Abend
bastla
... aber da ich manchmal im Abwarten so schlecht bin:
Grüße
bastla
@echo off & setlocal
cd /d D:\Daten\P1
for %%i in (*.jpg) do call :ProcessFile "%%i"
goto :eof
:ProcessFile
for /f "tokens=1,2 delims=_" %%d in ('echo %~n1') do set Zeitraum=%%d & set Bereich=%%e
set Verz=%Zeitraum:~0,4%-%Zeitraum:~4,2%_%Bereich%
if not exist %Verz% md %Verz%
move %1 %Verz%
Grüße
bastla