Kopiervorgang nur wenn Zielverzeichnis leer
Hallo zusammen,
bin heute zufällig auf dieses Forum gestossen, Super sache!!
Habe auch direkt eine Frage:
Per Bat will ich mehrmals täglich manuell Dateien kopieren.
Der Kopiervorgang darf jedoch nur dann starten wenn das Zielverzeichnis leer ist.
Falls das Verzeichnis nicht leer ist muss die Batchdatei eine Fehlermeldung liefern.
Kann mir hier jemand helfen??
Vielen Dank!
Gruss
motec
bin heute zufällig auf dieses Forum gestossen, Super sache!!
Habe auch direkt eine Frage:
Per Bat will ich mehrmals täglich manuell Dateien kopieren.
Der Kopiervorgang darf jedoch nur dann starten wenn das Zielverzeichnis leer ist.
Falls das Verzeichnis nicht leer ist muss die Batchdatei eine Fehlermeldung liefern.
Kann mir hier jemand helfen??
Vielen Dank!
Gruss
motec
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 19806
Url: https://administrator.de/forum/kopiervorgang-nur-wenn-zielverzeichnis-leer-19806.html
Ausgedruckt am: 17.05.2025 um 09:05 Uhr
5 Kommentare
Neuester Kommentar
Moin motec,
willkommen im Forum. Sollst auch gleich Deinen ersten Newbie-Rüffel bekommen - selbst bei Batchen ist es mittlerweile (manchmal) wichtig, um welche Windowsversion es geht.
Folgender Batch zeigt eine der möglichen Strategien ab Windows 2000 ff, unter Win9x wären kleinere Anpassungen nötig. Allerdings nicht in den beiden eigentlich wichtigen Zeilen mit der "ist-Verzeichnis-leer?"-Prüfung im Block :ChkIfEmpty.
Output bei mir wäre:
Beim Selbertesten bitte die Zeile Set "testdir=d:\temp\MyDir" ändern in Set "testdir=%temp%\MyDir".
HTH Biber
willkommen im Forum. Sollst auch gleich Deinen ersten Newbie-Rüffel bekommen - selbst bei Batchen ist es mittlerweile (manchmal) wichtig, um welche Windowsversion es geht.
Folgender Batch zeigt eine der möglichen Strategien ab Windows 2000 ff, unter Win9x wären kleinere Anpassungen nötig. Allerdings nicht in den beiden eigentlich wichtigen Zeilen mit der "ist-Verzeichnis-leer?"-Prüfung im Block :ChkIfEmpty.
:: ----- 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 leer
if exist %testdir% dir /b /A:-d %testdir%>nul 2>nul && @echo %testdir% ist nicht leer
goto :eof
:: ----- snapp isDirleer.bat
>e:\isDirLeer.bat
Leeres Verzeichnis wurde d:\temp\MyDir angelegt..
Teste ..LeeresDir
d:\temp\MyDir ist leer
Teste ..NichtLeeresDir
d:\temp\MyDir ist nicht leer
HTH Biber
och, motec,
ich hatte Dein Problem schon verstanden (glaub ich) und es war durchaus konstruktiv gemeint - ich wollte Dir nur eine mögliche Strategie zeigen, wie Du diese Prüfung gestalten kannst.
Das Wesentliche ist ja in den beiden "IF Exist verzeichnis"-Zeilen:
..
:ChkIfempty
Echo Teste ..%1
goto :eof
..
Mimik..
1) wenn das Verzeichnis existiert ( z.B. IF exist \\192.125.12.34\Backup\ ), dann...
2) dir /b /A:-d \\192.125.12.34\Backup>nul 2>nul
...zeige mir alle Dateien, die nicht das Directory-Attribut haben
Denn die beiden Pseudo-Einträge "."(aktuelles Verzeichnis) und ".."(Parent) will ich unterdrücken....
... dann -> zwei Möglichkeiten:
Entweder es gibt solche Dateien, also Verzeichnis nicht leer..
oder es gibt keine Dateien, dann ist es leer.
Und das war doch die Prüfung, die Du wolltest, dachte ich?
Sonst poste den Batch (oder den relevanten Teil davon), dann zeig ich das am konkreten Beispiel.
Grüße Biber