acid12
Goto Top

Dateien sortieren und verschieben per Batch

Ich will mehrere Verzeichnisse sortieren, derzeit sieht die Struktur etwa so aus:

  1. Ordner 1
    • 111.001
    • 111.002
    • 111.003
    • ...
    • 222.001
    • 222.002
    • 222.003
    • ...

Nun soll das ganze ordentlich sortiert werden, sprich es soll fuer jede Dateigruppe (111, 222, ...) ein eigener Ordner erstellt werden, in den die Dateien anschliessend verschoben werden, und das ganze natuerlich automatisch. Die Dateiendung ist dabei irrelevant, die Dateien sollen nur anhand des Namens sortiert werden.
Per Hand ist das leider eine etwas langfristige Aufgabe, da es sich um mehr als 100.000 Dateien handelt.

Kann mir eventuell jemand beim basteln einer passenden Batchdatei helfen? Oder kennt jemand ein Programm mit dem das funktioniert?

Content-ID: 96906

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

Ausgedruckt am: 19.11.2024 um 14:11 Uhr

D3S3RT
D3S3RT 14.09.2008 um 21:49:55 Uhr
Goto Top
solange es nicht zuviele untergruppen sind, würde ich einfach zb. mit totalcommander über num+ markieren und dann verschieben.

sinds zuviele sind die bash spezis gefragt.
bastla
bastla 15.09.2008 um 07:44:28 Uhr
Goto Top
Hallo acid12 und willkommen im Forum!

Das sollte sich etwa so machen lassen (ungetestet):
@echo off & setlocal
for /d %%v in ("D:\Startverzeichnis\*.*") do (  
    pushd "%%v"  
    for %%i in (*.*) do (
        if not exist "%%~ni\" md "%%~ni\" && echo Ordner erstellt: %%~dpni  
        move "%%i" "%%~ni\"  
    )
    popd
)
Damit werden alle im angegebenen Startverzeichnis liegenden Unterverzeichnisse "behandelt".

Grüße
bastla
acid12
acid12 16.09.2008 um 22:25:19 Uhr
Goto Top
Hallo und danke fuer die schnelle Antwort.
Das tut leider nicht, liefert auch kein "Ordner erstellt" zurueck. Die Dateien sind nach wie vor unsortiert.

Leider stehe ich mit Batchdateien etwas auf Kriegsfuss. Koenntest du dir das vielleicht noch mal ansehen?
Schonmal danke im Vorraus.

Gruss
David
bastla
bastla 17.09.2008 um 07:10:59 Uhr
Goto Top
Hallo acid12!
Koenntest du dir das vielleicht noch mal ansehen?
Habe ich mir nochmals angesehen ...

Mit dem Batch von oben als "Verschieben.cmd" und den Ordnern "D:\Startverzeichnis\ordner 1" und "D:\Startverzeichnis\ordner 2" sowie einigen darin enthaltenen Dateien nach dem von Dir dargestellten Muster erhalte ich folgenden Ablauf (die Zeilen 1, 15 und 21 enthalten nach dem "D:\>" die von mir getätigten Eingaben):
D:\>dir D:\Startverzeichnis /s /b
D:\Startverzeichnis\ordner 1
D:\Startverzeichnis\ordner 2
D:\Startverzeichnis\ordner 1\111.001
D:\Startverzeichnis\ordner 1\111.002
D:\Startverzeichnis\ordner 1\111.003
D:\Startverzeichnis\ordner 1\222.001
D:\Startverzeichnis\ordner 1\222.002
D:\Startverzeichnis\ordner 2\333.001
D:\Startverzeichnis\ordner 2\333.002
D:\Startverzeichnis\ordner 2\444.001
D:\Startverzeichnis\ordner 2\444.002
D:\Startverzeichnis\ordner 2\444.003

D:\>Verschieben.cmd
Ordner erstellt: D:\Startverzeichnis\ordner 1\111
Ordner erstellt: D:\Startverzeichnis\ordner 1\222
Ordner erstellt: D:\Startverzeichnis\ordner 2\333
Ordner erstellt: D:\Startverzeichnis\ordner 2\444

D:\>dir D:\Startverzeichnis /s /b
D:\Startverzeichnis\ordner 1
D:\Startverzeichnis\ordner 2
D:\Startverzeichnis\ordner 1\111
D:\Startverzeichnis\ordner 1\222
D:\Startverzeichnis\ordner 1\111\111.001
D:\Startverzeichnis\ordner 1\111\111.002
D:\Startverzeichnis\ordner 1\111\111.003
D:\Startverzeichnis\ordner 1\222\222.001
D:\Startverzeichnis\ordner 1\222\222.002
D:\Startverzeichnis\ordner 2\333
D:\Startverzeichnis\ordner 2\444
D:\Startverzeichnis\ordner 2\333\333.001
D:\Startverzeichnis\ordner 2\333\333.002
D:\Startverzeichnis\ordner 2\444\444.001
D:\Startverzeichnis\ordner 2\444\444.002
D:\Startverzeichnis\ordner 2\444\444.003


D:\>
Zu Testzwecken könntest Du im Batch die Zeile 2 ändern auf:
for %%v in ("D:\Dein Verzeichnis\Dein Ordner") do (  
Damit werden nur die Dateien des einen angegebene Ordners verschoben.
(Achtung: Der Schalter "/d" nach dem "for" ist in diesem Fall nicht erforderlich.)

Sollte das noch immer nicht klappen, kannst Du als nächsten Schritt das "echo off" in ein "echo on" ändern und dann den Batch aus der Kommandozeile starten. Durch die Anzeige jedes Befehls kannst Du dann hoffentlich erkennen, wo etwas schief läuft ...

Grüße
bastla
acid12
acid12 17.09.2008 um 16:39:12 Uhr
Goto Top
Hallo,

ok, funktioniert doch, gestern hats nicht geklappt, heute doch. Und das obwohl ich nichts am Script geaendert habe. Naja..

Vielen Dank, du hast mir vermutlich etliche Stunden Arbeit erspart!

Gruss
David
bastla
bastla 17.09.2008 um 16:57:19 Uhr
Goto Top
Hallo acid12!
ok, funktioniert doch
Diese erfreuliche Tatsache könntest Du noch Wie kann ich einen Beitrag als gelöst markieren? dokumentieren ...

Grüße
bastla