morph163
Goto Top

Wenn Ordner leer dann Shutdown

Hallo,
ich habe einen Beitrag gefunden der mein Anliegen halb behandelt, leider eben nur halb.

Prüfen per Batch ob ein Verzeichnis leer ist

Dort geht um auch um die Prüfung ob ein Ordner leer ist aber eben nur darum. Ich möchte auch das etwas passiert wenn der Ordner leer ist, konkret soll sich die Abfrage solange wiederholen bis der Ordner leer ist und der PC dann heruntergefahren werden oder einfach eine beliebige bat ausgeführt werden.


Set "testdir=c:\MyDir"
if exist "%testdir%" dir /b /A:-d "%testdir%">nul 2>nul && @echo %testdir% ist nicht leer
soweit funktioniert das ganze, was muss ich noch ergänzen um die bat aufzurufen wenn echo = "@echo %testdir% ist leer" ist?

Vielen Dank für eure Hilfe

Content-ID: 7327655018

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

Ausgedruckt am: 17.11.2024 um 03:11 Uhr

7010350221
7010350221 27.05.2023 aktualisiert um 14:42:19 Uhr
Goto Top
@echo off
Set "testdir=d:\temp\MyDir"  
:start
if exist "%testdir%" dir /b "%testdir%">nul 2>nul || (  
    echo %testdir% ist leer fahre rechner runter
    shutdown /s /f /t 0
) && (
     timeout /t 2 >nul
     goto start
)
mayho33
mayho33 30.05.2023 aktualisiert um 07:28:59 Uhr
Goto Top
Hi,

Am einfachsten löst du das Problem mit einem Scheduled-Task in Verbindung mit einem Powershell-Skript.

Wie man einen ScheduledTask anlegt mit erhöhten Rechten kannst du unter anderem hier nachlesen. Dazu den Taskplanner bereits als Administrator starten:
Aufgabenplanung Backup

Die Wiederholungen des Scripts kannst du im Trigger unter Erweiterte Einstellungen einstellen:
schtask2

Das script ist ein ~2-Zeiler:
if( (Get-ChildItem "C:\mein Test-Pfad" | Measure-Object).count -lt 1)  
{
    start-process -FilePath "cmd.exe" -ArgumentList "/c Shutdown /s /t 15 /f"  
}

ersetze die Commandline wie im link mit folgendem:

vollständige Command Line:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -Executionpolicy Bypass -WindowStyle Hidden -file "Pfad zu deiner.ps1"
schtask

Grüße!