IT-Gurus ^^?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das Problem ist eigentlich nur die Ankündigung des Shutdown , wenn diese verzögert ausgeführt wird.

Das lässt sich umgehen, wenn die Verzögerung außerhalb des Shutdownbefehls ausgeführt wird und anschließend sofort heruntergefahren wird. (kann zu Datenverlust führen!)

timeout 120
shutdown /s /f /t 0 

Allerding bliebe solange die Batch und ihr Fenster geöffnet... das wird man jedoch mit einem kleinen Trick los (das kann er nicht ohne weiteres entdecken):

@echo off
set self=%~f0
if  not "%~1"=="" goto :main
 rem  starte die Batch als Hintergrundprozess ohne Fenster
echo var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%self:\=\\%', 'runFlag', '', 'open', 0)>"%temp%\runHidden.js"
cscript /nologo "%temp%\runHidden.js"
exit /b

:main
 rem warte 120 Sekunden
timeout 120
 rem zum probieren statt shutdown einfach 3x Beep (denn sehen  kann man die Batch  nicht)
echo aaax|choice /c x >nul
::shutdown /s /f /t 0 

...dito mit 15 Minuten Verzögerung

@echo off
set self=%~f0
if  not "%~1"=="" goto :main
echo var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%self:\=\\%', 'runFlag', '', 'open', 0)>"%temp%\runHidden.js"
cscript /nologo "%temp%\runHidden.js"
 rem starte shutdown sichtbar und  mit Ankündigung  (kan  mit shutdown /a beendet werden)
shutdown /s  /t 120 
exit /b

:main
 rem der gnadenlose  Schlag  folgt  nach 15 Minuten  
timeout 900
shutdown /s /f /t 0 

...nun musst Du nur dafür sorgen, das die Batch unauffällig oder automatisch gestartet wird....

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
:loop
shutdown -s -t 120
timeout /t 900
goto loop
Woher ich das weiß:eigene Erfahrung
Erzesel  26.11.2022, 08:44

Technisch richtig (wenn es bei shutdown nicht um einen Befehl ginge, welcher die Batch beendet).

Also: logisch falsch.

Der shutdown beendet alle Programme. So auch die Batch. Da kein Mechanismus vorhanden ist, welcher die Batch nach dem erneuten booten startet und mit dem Timeout 900 fortfahren lässt, wird dieser nie ausgeführt ebensowenig wie der nachfolgende Loop

0
PepeCx 
Fragesteller
 26.11.2022, 09:00
@Erzesel

Den shutdown selbst beendet man ja mit Shutdown /a, sollte deswegen nicht Loop dann dennoch klappen, da der Shutdown misslungen ist?

1