Ordner automatisch aus Ordnernamen erstellen

  • was ich brauche: leere Ordner mit Namen anhand von schon vorhandenen Ordner automatisch erstellen und dann die vorhandenen Ordner komplett in entsprechende leeren verschieben. und das auch für mehrere Ordner gleichzeitig. es gibt für einzelne Files ein Programm http://www.thecodeline.com/wp/products/filetofolder, macht genau das nur mit Dateien, also erstellt Ordner anhand von Dateinamen und dann verschiebt auch die Dateien darein. Lässt sich in Explorer einbauen und mit Rechtsklick mehrere Dateien "einordnern".
    es wird auch bestimmt mit batch gehen, mein Problem ist, dass ich mich damit gar nicht auskenne, bin komplett auf GUI angewiesen. oder, wenn es eine batch-Datei ist, sollte man mir sehr ausführlich erklären, wie das Ding funktioniert :)
    könnte es jemand sowas basteln oder kennt ein Programm dafür..?

  • hier ist was was ich gefunden hab und bisschen umgeändert hab... scheint zu gehen...


    Code
    1. setlocal enabledelayedexpansion
    2. for /f "tokens=*" %%a in ('dir /b /a:d') do (
    3. attrib "%%a\*.*" | find "File not found"
    4. if !errorlevel!==1 (
    5. if not exist "%%a\%%a" md "%%a\%%a"
    6. xcopy "%%a\*.*" "%%a\%%a"
    7. del "%%a\*.*" /f /q
    8. )
    9. )


    aber wie immer, erst testen oder ein backup machen...


    was das macht ist aber dateien kopieren, dann original löschen... wenn du aber hier große dateien hast, lieber was anderes suchen :P

  • es lebt! :thumbsup:
    Danke, funktioniert.. nur eine Kleinigkeit: könnte man es so machen, dass der Ordnerinhalt komplett 1:1 verschoben wird..? habe für test einen typischen release-ordner genommen, ich nenne es Hauptordner. also Ordnerinhalt vom Hauptordner: 1 Ordner (Sample), 49 .rar, 1 .nfo, 1 .sfv.
    batch hat neuen Ordner erstellt und alles verschoben und gelöscht, außer Ordner (Sample), der ist nach draußen "rausgefallen". also im neuen Ordner habe ich jetzt zwei Ordner: Hauptordner und Sample. ist nicht tragisch, aber wenn es besser geht :)

  • Hm, mal xcopy /? gemacht, das hilft schon...


    Code
    1. setlocal enabledelayedexpansion
    2. for /f "tokens=*" %%a in ('dir /b /a:d') do (
    3. attrib "%%a\*.*" | find "File not found"
    4. if !errorlevel!==1 (
    5. if not exist "%%a\%%a" md "%%a\%%a"
    6. xcopy /S /J "%%a\*.*" "%%a\%%a"
    7. del "%%a\*.*" /f /q
    8. )
    9. )


    Das /J wird empfohlen, wenn man größere Dateien kopiert (was auch immer das sein soll ; ), ist aber nicht zwingend notwendig.
    Das /S heißt: "Kopiert Verzeichnisse und Unterverzeichnisse, die nicht leer sind." Damit sollte das Sample mitkommen.


    Windows kennt seit einiger Zeit auch MOVE (verschieben), was m.E. noch schneller geht und nicht die Gefahr beinhaltet, daß das gelöscht wird, was nicht (korrekt) kopiert wurde:


    Code
    1. setlocal enabledelayedexpansion
    2. for /f "tokens=*" %%a in ('dir /b /a:d') do (
    3. attrib "%%a\*.*" | find "File not found"
    4. if !errorlevel!==1 (
    5. if not exist "%%a\%%a" md "%%a\%%a"
    6. move "%%a\*.*" "%%a\%%a"
    7. move "%%a\Sample" "%%a\%%a"
    8. )
    9. )


    Das Sample muß hier einzeln verschoben werden, da das DOS-MOVE leider nicht so funktioniert wie Linux' mv ...

    Ein Leben ohne Kaffee mag möglich sein, ist aber sinnlos.

    Einmal editiert, zuletzt von GoneFar ()

  • mit xcopy /S /J funktioniert nicht, wird nichts kopiert.. evtl. habe ich es falsch kopiert?
    dass mit move gefällt mir besser und funktioniert auch. aber, angenommen der Ordner heißt nicht Sample oder es sind mehrere Ordner drin, könnte man für den Fall was machen? wildcard oder sonstiges..?

  • Hatte ich probiert, wollte er aber nicht recht (einfach nur "*").


    Wie gesagt, in der Linux-Welt ist sowas als 1-Zeiler realisiert und funktioniert auch besser =: )


    Mach' Dir Cygwin drauf, und wir kommen ins Geschäft ;)

    Ein Leben ohne Kaffee mag möglich sein, ist aber sinnlos.