shutdown mit j/n abfrage?
suche einfachen Script für PC um den Rechner über bat-File abzuschalten oder zum restart aufzurufen. J/N abfrage.
5 Antworten
Minimalistisch:
Mini_demo.cmd
@echo off
choice /n /c NH /m "[N]eustart [H]erunterfahren
if %Errorlevel% equ 1 (shutdown /r /t 0 /f)
if %Errorlevel% equ 2 (shutdown /s /t 0 /f)
Etwas auf gehübscht:
Comfort_Demo.cmd
@echo off
chcp 65001 >nul
mode 40,4
color 1e
set "defaultTimer=5" &rem Zeit (Sekunden), nach welcher die Defaultoption ausgeführt wird
set "defaultOption=H" &rem Standardaktion weche ausgeführt wird, wenn innerhalb der gegebenen zeit keine Wahl per Taste getroffen wird
rem auswahlmenü
echo [N]eustart [H]erunterfahren
echo [A]bbrechen
choice /n /c NHA /t %defaultTimer% /d %defaultOption% >nul
if %Errorlevel% equ 1 (
set "ShutdownParams=/r /t 0 /f"
set "Actiontext=neustarten"
goto :confirm
)
if %Errorlevel% equ 2 (
set "ShutdownParams=/s /t 0 /f"
set "Actiontext=herunterfahren"
goto :confirm
)
if %Errorlevel% equ 3 (exit /b) &rem bei Abbruch Batch beenden...
:confirm
color 4e
cls
choice /m "Wirklich %Actiontext%"
if %Errorlevel% equ 1 (shutdown %ShutdownParams%)
mit einem echten GUI als Powershell-Batch-Hybrid:
Posh-Batch_demo.cmd
<# : Batch Abschnitt Zeile nicht ändern
start "" /min powershell -WindowStyle Hidden -Command "&([Scriptblock]::Create((gc '%~f0' -enc UTF8 -raw )))"
exit /b
: Ende Batch Zeile nicht ändern #>
using namespace System.Windows.Forms
Add-Type -AssemblyName System.Windows.Forms
$Form = [Form]@{
Text = 'Wähle'
Size = '280,130'
TopMost = $True
StartPosition = 'CenterScreen'
#etwas Spielerei:
#um den Hintergrund unsichtbar zu machen entferne die Rauten am begin der fogenden 3 Zeilen
# FormBorderStyle = 0 #Keine Titelleiste
# BackColor = 'Fuchsia' #Hintergund auf seltene Farbe
# TransparencyKey = 'Fuchsia' #macht den Hintergrund (Farbe Fuchsia) unsichtbar
}
[Button]@{
Location = '10,10'
Size = '250,20'
Text = 'Herunterfahren'
BackColor = 'Control'
}|%{
$Form.Controls.Add($_)
$_.Add_Click({ #was beim Buttonclick passeieren soll...
$Answer = [MessageBox]::Show('Bist Du sichere?', '', 'YesNo', 'Question')
if ($Answer -eq 'Yes') {Stop-Computer -Force}
else {$Form.Close()}
})
}
[Button]@{
Location = '10,40'
Size = '250,20'
Text = 'Neustart'
BackColor = 'Control'
}|%{
$Form.Controls.Add($_)
$_.Add_Click({ #was beim Buttonclick passeieren soll...
$Answer = [MessageBox]::Show('Bist Du sichere?', '', 'YesNo', 'Question')
if ($Answer -eq 'Yes') {Restart-Computer -Force}
else {$Form.Close()}
})
}
$Form.ShowDialog()
Kannst du dir fix mit Chat GPT entwickeln lassen. Das sollte eigentlich nur 2-4 Zeilen Bat Code sein. 😇
Würde aber anstelle eines .bat vielleicht lieber Powershell nutzen, also .ps1
Nein, ich brauche als Programmierer der sich täglich damit beschäftigt auch keine. Aber ich bin davon ausgegangen, das der/die Fragestellerin ein DAU ist und keine Ahnung von der Materie hat. Sonst wäre die Frage ja komplett obsolet gewesen. Deine Antwort sieht aber gut aus! 😇
da hättest Du dem Fragesteller die 4 Zeilen auch gleich (ohne den Umweg über den unzuverlässigen ChatGPT) überlasen können. 😏🙄
Was macht hinterlässt Du für einen Eindruck, wenn Du (als jemand der es Wissen müsste) auf einen KI-Bot verweist ? Schwache Kür😣
Stimmt allerdings da gebe ich dir recht 😅
Manchmal finde ich es aber auch sinnvoll wenn ich Leuten einen Anstoß gebe selbst auf die Lösung zu kommen und so ihre Problemlösungsstrategie zu verbessern. Und ich war am iPhone beim beantworten, da ist es schlecht mit Code schreiben und ggf. nochmal testen ob ich keinen Bockmist geschrieben habe. Gehe immer gern auf Nummer sicher bevor ich Leuten ein Random Skript empfehle. ✌️
Unter dieser Voraussetzung sei Dir verziehen.
Ich lasse auch nichts raus ohne zu testen.
Ich würde einfach die gewünschte Aktion über eine Variable festlegen. Als Code sage das dann so aus:
@echo off
set /p oper=was soll denn passieren?
shutdown /%oper% /f /t 02
exit
Das gibt's natürlich keine Eingabefilterung, aber durch das eingeben von r bekommst du einen restart, s macht einen shutdown, h bringt den PC in den Ruhezustand, ...
Mit PowerShell kann man GUIs entwickeln. Und da die Powershell auf das System zugreifen kann, ist dein Vorhaben einfach zu realisieren.
Vielen Dan k für eure Hilfe. Probiere aus. Werde ggf. nochmal. Vielen Dank nochmal.
Allerdings haben wir da noch kein (J/N)!
Dafür braucht man doch keine KI 🤣 Habt ihr keinen Kopf mehr zum selbst denken?
In Sachen Powershell gebe ich Dir recht, Allerdings ist der Aufruf von Powershellscripten über das "rechtsklick-Menü" etwas hakelig.
Mit etwas Trickserei kann man allerdings über meinen Batch-stub ein Powershellscript in einer .cmd-Datei unterbringen. dann genügt Doppelklick.