Mit dem Windows Explorer leere Ordner aufspüren?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn es mit dem Windows Explorer sein muss, dann jeden Ordner einzeln öffnen.

Allerdings sind dann immer noch die versteckten Dateien versteckt, wenn diese nicht angezeigt werden sollen.

Wenn es einfach und richtig gehen soll, dann entweder mit einem Batch-Skript oder mit einem Programm, das die Ordner-Größen anzeigt, aber auch wieder nur jeden Ordner einzeln.

Ein Batch-Skript sähe dann z.B. so aus:
(als Administrator ausführen, bzw. die Console als Administrator ausführen!)

FindEmptyFolders.cmd

@echo off
setlocal enabledelayedexpansion

set scandir=%~1
if not defined scandir set scandir=.

:beginn_loop
if not defined scandir goto :end_loop
call :dirdiver "!scandir!"
shift
set scandir=%~1
goto :beginn_loop
:end_loop

goto :eof

:dirdiver
pushd "%~1"
set /a counter=0
for /f "usebackq delims=" %%F in (`dir /b/a`) do (
  set /a counter+=1
)
if !counter! eq 0 (
  echo.%~f1
) else (
  for /f "usebackq delims=" %%D in (`dir /b/ad`) do (
    call :dirdiver "%%~D"
  )
)
popd
goto :eof

Dieses Skript gibt alle leeren Unterverzeichnisse der in den Parametern angegebenen Verzeichnisse und deren Unterverzeichnissen als kompletten Pfad aus. Wird kein Parameter angegeben, wird im aktuellen Verzeichnis gescannt.

Falls keine Unterverzeichnisse gescannt werden sollen, muss das im Code extra nachgetragen werden.

Es ändert gar nichts am Dateisystem.

Zugriffs-geschützte Verzeichnisse werden nicht berücksichtigt, allerdings alle sonstigen Verzeichnisse und Dateien mit den R-, H- und S-Attributen. D.h. wenn der Benutzer Lese-Zugriff auf ein Verzeichnis hat, aber keinen Lese-Zugriff auf die enthaltenen Dateien, wird das Verzeichnis als leer ausgegeben. Daher ist das Ergebnis mit Vorsicht zu genießen, wenn es um besondere System-Ordner geht!

Allerdings habe ich dieses Skript gerade ohne Windows geschrieben und nicht getestet. Das kannst Du ja dann mal machen und Bescheid geben, wenn etwas nicht stimmt. Es sollte aber ab Win2000++ funktionieren.

Ach, ich glaube, ich speichere das auch mal bei mir und teste es bei Gelegenheit. :)

MarkusGenervt  10.04.2018, 00:03

PS:
Der Fehler-Teufel hat sich eingeschlichen:

diese Zeile:

if !counter! eq 0 (

muss so lauten:

if !counter! equ 0 (

Ich hab mich schon zu sehr an Bash gewöhnt. ¯\_(ツ)_/¯

PPS:
Hab's doch in der VBox unter XP getestet und jetzt läuft es rund und sauber.

Die FOR-Schleifen können übrigens auch in eine Zeile zusammen gefasst werden. Hab es hier nur für eigenen Code gelassen.

0
MarkusGenervt  10.04.2018, 00:31

Ach, was soll's – hier die aufgeräumte Version – bin halt Perfektionst:

@echo off
SetLocal EnableDelayedExpansion
if "%~1" == "" call :main .
:main
if "%~1" == "" goto :eof
call :dirdiver "%~1"
shift & goto :main
:dirdiver
pushd "%~1"
set /a counter=0
for /f "usebackq delims=" %%F in (`dir /b/a`) do set /a counter+=1
if !counter! equ 0 (
  echo.%~f1
) else (
  for /f "usebackq delims=" %%D in (`dir /b/ad`) do call :dirdiver "%%~D"
)
popd
goto :eof

Achtung! Die langen FOR-Schleifen-Zeilen werden hier ggf. automatisch umgebrochen, müssen aber in einer Zeile stehen!

0

Ist unnütz ... die sindleer und brauchen auch keinen Speicherplatz.

In Glaries Utylities hat es die Möglichkeit leere Ordner zu suchen und zu löschen... aber das ist unnütze Arbeit.

WIr verwenden Totalcommander, da kann man einstellen, dass leere Ordner "grau" angezeigt werden ... das ist dann viel besser.

MarkusGenervt  09.04.2018, 23:23

Tja, der TC ist einfach unschlagbar.

0
chaosklub  09.04.2018, 23:28
@MarkusGenervt

Ja, das ist er ... aber das mit dem "grau" anzeigen, von den leeren Ordnern ist leider (noch) nicht standard ... man muss es noch einbauen und das ist ziemlich umständlich.

Ich verstehe auch nicht, warum das Löschen von leeren Ordnern in Glaries Utylities angeboten wird ... es gibt Programme, die legen einen leeren Ordner an, den sie dann später füllen ... und wenn man den löscht, machen die Ärger.

0
sunnysailorboy  15.11.2018, 10:44

moin, wie genau soll das beim TC funktionieren? (ohne plugin!?)

0