apop85
Goto Top

Ordner die nicht Leer sind verschieben

Hallo zusammen. Ich möchte gerne ein Script schreiben welches mir alle Ordner die nicht leer sind in einen anderen Ordner verschiebt.

Die ordner sind so abgelegt, dass sobald ein Projekt abgeschlossen wird der Komplette inhalt in einen dafür erstellten Ordner geschoben werden. Aus diesem Ordner möchte ich dann Alle Unterordner welche nicht leer sind in ein anderes Verzeichnis verschieben. Wie stelle ich das am besten an? Bei move /? oder xcopy /? konnte ich keine solche Befehlserweiterung finden und über die Ausgabe von dir krieg ich ja die Ordnergrösse nicht raus?

Grüsse Apop

Content-ID: 205368

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

Ausgedruckt am: 26.11.2024 um 12:11 Uhr

filippg
filippg 21.04.2013 um 02:04:09 Uhr
Goto Top
Hallo,

robocopy kann alles - inkl. Kaffee kochen.
Doku ist http://technet.microsoft.com/en-us/library/cc733145%28v=ws.10%29.aspx , gleich der erste genannte Parameter /s sollte leere Verzeichnisse ausschließen. Im Netz finden sich auch zahlreiche Beispiele
(Das Problem bei robocopy: es kann alles - inkl. Kaffee kochen - aber es hat noch niemand die korrekte Parameterkombination zum Kaffee kochen herausgefunden)

Gruß

Filipp
bastla
bastla 21.04.2013 um 10:15:33 Uhr
Goto Top
Hallo Apop85!
über die Ausgabe von dir krieg ich ja die Ordnergrösse nicht raus?
Wozu würdest Du die benötigen? Je nach Deiner Definition von "leer" sollte doch schon
set "Anz="  
for /f %%i in ('dir /s/a-d/w "D:\Dein Ordner\Dein Unterordner"^|findstr "Datei(en)"^|findstr /e "Bytes"') do set /a Anz=%%i  
if %Anz% neq 0 echo Ordner verschieben!
genügen.

Für alle unmittelbaren Unterordner von "D:\Dein Ordner" einzeln dann etwa so:
setlocal enabledelayedexpansion
for /d %%u in ("D:\Dein Ordner\*") do (  
    set "Anz="  
    for /f %%i in ('dir /s/a-d/w "%%u"^|findstr "Datei(en)"^|findstr /e "Bytes"') do set /a Anz=%%i  
    if !Anz! neq 0 echo Ordner "%%u" verschieben!  
)
Bei diesem Ansatz gilt ein Ordner dann als leer, wenn er und ev vorhandene Unterordner keine einzige Datei enthalten.
Ansonsten schließe ich mich filippg an: Mit "/s" solltest Du sowohl mit "robocopy" als auch mit "xcopy" die passenden Ordner kopiert bekommen, wobei "robocopy" als Vorteil noch die Option "/move" zu bieten hätte ...

Grüße
bastla
Endoro
Endoro 21.04.2013 aktualisiert um 11:31:32 Uhr
Goto Top
Hallo Apop85,

feststellen, ob ein Ordner und seine Unterordner leer sind:
for /f %%i in ('dir /s "startfolder"') do call set files=%%folders%%&set folders=%%i  
if %files% equ 0 (echo Alles leer!) else echo %files% Datei(en) gefunden!


Gruss!