Wie kann ich mit CMS prüfen ob ein Ordner leer ist?
ich möchte gerne prüfen ob in einem Ordner Dateien oder Unterordner sind deswegen einmal mit /A:-d für Dateien und einmal /A:d für Ordner aber wenn ich die Batch datei starte zeigt der mir immer an das ein Unterordner vorhanden ist.
ich Bitte um Hilfe?
@echo on
Set "testdir=C:_Prog_Data\CMD\KI\Test2"
Set "testdir2=C:_Prog_Data\CMD\KI\Test2"
Set "status=nul"
Set "status2=nul"
if exist "%testdir%" dir /B /A:-d "%testdir%">nul 2>nul || Set status=leer
if exist "%testdir%" dir /B /A:-d "%testdir%">nul 2>nul && Set status=Nleer
if exist "%testdir2%" dir /B /A:d "%testdir2%">nul 2>nul || Set status2=leer
if exist "%testdir2%" dir /B /A:d "%testdir2%">nul 2>nul && Set status2=Nleer
echo Datei :%status%
echo Ordner:%status2%
If "%status%;%status2%" == "leer;leer" echo %testdir% ist leer
If %status% == Nleer echo %testdir% ist nicht leer
If %status2% == Nleer echo %testdir% ist nicht leer
pause
2 Antworten
deine if - anweisungen verkettet mit den || und && operatoren sind mir suspekt (ich verstehe sie nicht). irgendwie erwartest du, dass die if-anweisung "an sich" einen wahrheitswert zurückgibt. sehe ich aber bei "help if". ich denke, der wahrheitswert ergibt sich durch das ev. ausgeführte kommando (spekulation). wahrscheinlich ist das ELSE hier besser.
ich verstehe auch nicht die 2-erlei abfragen auf d und -d: wenn testdir leer ist wird auch nix ausgegeben. aber auch hier wäre der errorlevel=0=ok.
wenn du dir zeit und mühe sparen willst, nimm lieber VBS, die BAT-programmierung ist ziemlich krampfig (wie du siehst). in vbs kannst kann du mit dem filesystemobject die anzahl einträge direkt abfragen.
Mit dem dir Befehl Und den dann einfach in ne variable machen