[Batch/Bash] Batch Programm zur automitischen erstellung von Ordnern

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von spotting, 22. Juli 2009 .

  1. 22. Juli 2009
    Batch Programm zur automitischen erstellung von Ordnern

    Servus,

    Hab da ein Problem und bin etwas zu faul es manuell zu lösen.

    Habe heute einen Datenträger bekommen, auf diesem Datenträger sind ca. 20000 Dateien in einem einzigen Ordner gespeichert.
    Eine der Dateien sorgt zu einem Absturz des Windows Explorer.

    Bevor ich jetzt hingehe und die Dateien in 15 Schritten manuell splitte und Aufteile bin ich auf der suche nach einem Batch script, das mir jede einzelne Datei in einen einzelnen Ordner verschiebt.
    somit ist das Problem an sich zwar nur aufgeschoben ... aber ich verbringe keine unendlichkeiten mit dem auffinden des fehlers ... wenn er auftritt weiß ich sofort wo er ist ...

    also ablauf der batch:

    Datei beguggen,
    dateiname speichern,
    ordner an gleicher stelle erstellen,
    datei in den ordner verschieben
    und zurück in den originalordner wechseln ...

    das alles in einer schleife, bis keine dateien mehr da sind.

    geht das?


    mfg spotting
     
  2. 22. Juli 2009
    AW: Batch Programm zur automitischen erstellung von Ordnern

    Ich würde da so ran gehn(ungetestet):
    Code:
    @echo off
    dir X:\deinordner /B >> files.txt
    set counter=1
    FOR /F "tokens=1" %%f IN (file.txt) DO (
    mkdir X:\deinordner\%counter%
    move X:\deinordner\%%f x:\deinordner\%counter%\%%f
    set /a counter=counter+1
    )
    ka obs geht aber so als Anregung evtl. ganz hilfreich
     
  3. 22. Juli 2009
    AW: Batch Programm zur automitischen erstellung von Ordnern

    Code:
    @echo off
    
    rem rekursiver Aufruf? (1.Parameter == /R)
    if %1.==/R. goto rekursiv
    
    
    rem ein Prameter vorhanden?
    if %1.==. goto no_params
    set src=%1
    :param_
    
    rem erster Prameter sollte der Ordner sein, wo's abgeht
    if not exist %src%\* goto err_param
    
    
    rem und nun für jede Datei innerhalb des Quellordners ...
    rem dabei ist:
    rem '%%i' die "For"-Variable
    rem '%0' ist das script selbst
    rem 1 '/R' die Markierung für den rekursiven Aufruf
    rem 2 '%src%' der Quellordner
    rem 3 '%%~fi' Laufwerk+Pfad+Name+Erweiterung der Datei
    rem 4 '%%~dpsi' Laufwerk+Pfad+Name+Erweiterung als '8.3'
    for %%i in (%src%\*.*) do call %0 /R "%src%" "%%~fi" %%~si
    goto end_batch
    
    
    rem --------------------------------------------------
    
    :rekursiv
    rem bin ich's selbst??? Ooops!
    if %3.==%0. goto exit_batch
    
    rem check %3 (Datei)
    if not exist %3 goto err_R_Datei
    
    rem "falschen" Ordner erstellen ...
    if exist %4__\* goto err_R_Dummy
    md %4__
    rem ... Datei verschieben ...
    move %3 %4__ >Nul
    rem ... und "falschen" Ordner korrigieren...
    move %4__ %3
    
    goto exit_batch
    
    
    rem --------------------------------------------------
    
    :no_params
    echo.
    echo. kein Ordner angegeben...
    echo. verwende aktuellen Ordner
    set src=.
    rem ... und Rücksprung
    goto param_
    rem echo. [Abbruch]
    rem echo.
    rem goto end_batch
    
    
    :err_param
    echo.
    echo. Ordner "%1" scheint nicht zu existieren, kein Zugriff oder nix drin!
    echo. [Abbruch]
    echo.
    goto end_batch
    
    :err_R_Datei
    echo. Kein Zugriff auf oder Datei "%3" existiert nicht!
    echo. [skip...]
    goto exit_batch
    
    :err_R_Dummy
    echo. Dummer Zufall...
    echo. Dummy-Ordner "%4__" existiert bereits!
    echo. [skip...]
    goto exit_batch
    
    
    rem --------------------------------------------------
    
    :end_batch
    rem falls noch irgendetwas zu sagen ist...
    pause
    
    :exit_batch
    
    Hatte selbst keine lust das nu zu machen, aber ich hatte die batch noch wo rumfliegen
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.