Prüfen per Batch ob ein Verzeichnis leer ist
Problem:
ich möchte ein bestimmtes existierendes Verzeichnis auf dessen Status abfragen
d.h ob es leer ist oder Dateien enthält.
Unterordner sind keine vorhanden und werden auch nie angelegt.
entsprechend soll dann eine Meldung ausgegeben werden oder/und zu einer anderen Batch gesprungen werden die es z,b dann löscht.
zu berücksichtigen wären lange Dateinamen und Leerzeichen im Verzeichnispfad.
Habe hier im Board schon eine Suche gemacht und auch einen Thread gefunden ,der aber schon geschlossen ist.
Ich habe aus diesem Thread die Lösung übernommen,die entsprechenden Pfade ersetzt bekomme aber immer die gleiche Meldung egal ob das Verzeichnis leer ist oder nicht.
Außerdem möchte ich nichts löschen und neu erstellen ,sondern nur eine Art Statusabfrage machen lassen.
Kopie aus besagtem Thread Kopiervorgang nur wenn Verzeichnis leer
:: ----- snipp isDirLeer.bat
@echo off & setlocal
Set "testdir=d:\temp\MyDir"
if exist %testdir% rd %testdir% /s /q
md %testdir%
echo Leeres Verzeichnis wurde %testdir% angelegt..
call :ChkIfEmpty LeeresDir
:: jetzt mal irgendeine Datei dort reinstellen
echo blah>%testdir%\blubb.txt
call :ChkIfEmpty NichtLeeresDir
if exist %testdir% rd %testdir% /s /q
goto :eof
:ChkIfempty
Echo Teste ..%1
if exist %testdir% dir /b /A:-d %testdir%>nul 2>nul && @echo %testdir% ist nicht leer
goto :eof
:: ----- snapp isDirleer.bat
Danke für die Hilfe
Gruß
Claus
ich möchte ein bestimmtes existierendes Verzeichnis auf dessen Status abfragen
d.h ob es leer ist oder Dateien enthält.
Unterordner sind keine vorhanden und werden auch nie angelegt.
entsprechend soll dann eine Meldung ausgegeben werden oder/und zu einer anderen Batch gesprungen werden die es z,b dann löscht.
zu berücksichtigen wären lange Dateinamen und Leerzeichen im Verzeichnispfad.
Habe hier im Board schon eine Suche gemacht und auch einen Thread gefunden ,der aber schon geschlossen ist.
Ich habe aus diesem Thread die Lösung übernommen,die entsprechenden Pfade ersetzt bekomme aber immer die gleiche Meldung egal ob das Verzeichnis leer ist oder nicht.
Außerdem möchte ich nichts löschen und neu erstellen ,sondern nur eine Art Statusabfrage machen lassen.
Kopie aus besagtem Thread Kopiervorgang nur wenn Verzeichnis leer
:: ----- snipp isDirLeer.bat
@echo off & setlocal
Set "testdir=d:\temp\MyDir"
if exist %testdir% rd %testdir% /s /q
md %testdir%
echo Leeres Verzeichnis wurde %testdir% angelegt..
call :ChkIfEmpty LeeresDir
:: jetzt mal irgendeine Datei dort reinstellen
echo blah>%testdir%\blubb.txt
call :ChkIfEmpty NichtLeeresDir
if exist %testdir% rd %testdir% /s /q
goto :eof
:ChkIfempty
Echo Teste ..%1
goto :eof
:: ----- snapp isDirleer.bat
Danke für die Hilfe
Gruß
Claus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 44672
Url: https://administrator.de/contentid/44672
Ausgedruckt am: 17.11.2024 um 05:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Claus!
Du brauchst nur die folgenden Zeilen:
Die "@echo"-Anweisungen ersetzt Du einfach durch etwas Genehmes.
HTH
bastla
Du brauchst nur die folgenden Zeilen:
Set "testdir=d:\temp\MyDir"
if exist "%testdir%" dir /b /A:-d "%testdir%">nul 2>nul || @echo %testdir% ist leer
if exist "%testdir%" dir /b /A:-d "%testdir%">nul 2>nul && @echo %testdir% ist nicht leer
HTH
bastla
Moin cbli,
In diesen Fällen eines mehrfach benötigten Teil-Schnipsels verwendet man/frau in der Regel Unter-Prozeduren, Sub's oder im Batch eben Call:Subblock's.
Dazu wäre hilfreich zu wissen, welche Parameter sich denn unterscheiden.
beim ersten Aufruf:
- Lese-Verzeichnis [und Dateimaske]: C:\temp\*.zip
- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif"
- Zielverzeichnis : d:\dateien\verarbeitet\
Beim zweiten Aufruf:
- Lese-Verzeichnis [und Dateimaske]: C:\temp\*.zip ---------->oder was anderes?
- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif" ---------->oder was anderes?
- Zielverzeichnis : d:\dateien\verarbeitet\ ---------->oder was anderes?
Gruß
Biber
nun möchte ich diese for schleife ein 2tes mal in der batch einsetzten...
In diesen Fällen eines mehrfach benötigten Teil-Schnipsels verwendet man/frau in der Regel Unter-Prozeduren, Sub's oder im Batch eben Call:Subblock's.
Dazu wäre hilfreich zu wissen, welche Parameter sich denn unterscheiden.
beim ersten Aufruf:
- Lese-Verzeichnis [und Dateimaske]: C:\temp\*.zip
- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif"
- Zielverzeichnis : d:\dateien\verarbeitet\
Beim zweiten Aufruf:
- Lese-Verzeichnis [und Dateimaske]: C:\temp\*.zip ---------->oder was anderes?
- gesuchte Datei-Endungen: ".xls .doc .jpg .bmp .gif" ---------->oder was anderes?
- Zielverzeichnis : d:\dateien\verarbeitet\ ---------->oder was anderes?
Gruß
Biber
Okay, cbli,
ich versuche mal eine Skizze...
Zur Frage zwei (wenn *.doc UND *.xls enthalten)...
Dann musst Du statt der einen ODER-Bedingung...
...mehrere Findstr/Find-Bedingungen hintereinander stellen und mit UND, auf bätchisch "&&" verknüpfen.
=Wenn ".xls" gefunden UND ".doc" gefunden UND ".bla" gefunden DANN move ...
HTH Biber
[Ungetestete Skizze/ unausgelebte Phantasien... handle with care]
P.S. @cbli
Wollen wir Diesen Thread hier schließen?
Ich kann dafür Deinen geschlossenen Beitrag "Dateien abhängig vom Inhalt verschieben" wieder öffnen, wenn Du da noch weiterbasteln willst...
ich versuche mal eine Skizze...
::-----snipp SortierMeineZips.bat
@echo off & setlocal
set Inhalt="%Temp%\Inhalt.txt"
REM Erster Aufruf: ZIPDir=c:\Temp ZielDir=d:\dateien\verarbeitet
Call :MachMirDieZips c:\Temp d:\dateien\verarbeitet
REM Zweiter Aufruf: ZIPDir=c:\Temp\tiefer ZielDir=d:\dateien\sortiert
Call :MachMirDieZips c:\Temp\tiefer d:\dateien\sortiert
REM .... weitere Anweisungen...
goto :eof
~~~~~~~~
Raum für Notizen
~~~~~~~~
:MachMirDieZips Parameter 1: ZipDir Parameter2: ZielDir
for %%i in ("%~1\*.zip") do C:\Utils\7za l -slt "%%i" | findstr /c:"Path = " > %Inhalt% & findstr ".xls .doc .jpg .bmp .gif" %Inhalt% >nul && move /y "%%i" "%~2"
Zur Frage zwei (wenn *.doc UND *.xls enthalten)...
Dann musst Du statt der einen ODER-Bedingung...
findstr ".xls .doc .jpg .bmp .gif" %Inhalt%
findstr ".xls" %Inhalt%>nul && findstr ".doc" %Inhalt%>nul && findstr ".bla" %Inhalt%>nul move ......
HTH Biber
[Ungetestete Skizze/ unausgelebte Phantasien... handle with care]
P.S. @cbli
Wollen wir Diesen Thread hier schließen?
Ich kann dafür Deinen geschlossenen Beitrag "Dateien abhängig vom Inhalt verschieben" wieder öffnen, wenn Du da noch weiterbasteln willst...