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-Key: 205368

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

Printed on: April 20, 2024 at 01:04 o'clock

Member: filippg
filippg Apr 21, 2013 at 00:04:09 (UTC)
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
Member: bastla
bastla Apr 21, 2013 at 08:15:33 (UTC)
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
Member: Endoro
Endoro Apr 21, 2013 updated at 09:31:32 (UTC)
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!