Dávka by měla být zabezpečena i proti vložení chybných údajů a nebo jejich nevložení prostě nemělo by docházet k bezdůvodným pádům pokud se nevykoná požadovaný příkaz kdy je dávka ukončena úmyslně (příkaz exit).
Než ji spustíte můžete si ji celou prohlédnout:
Kód: Vybrat vše
@echo OFF
mode con:lines=30 cols=90
color 1E
Title Ukončit činnost..www.PC-help.cz
:Mnu1
cls
echo.
echo POKUD MÁ BÝT DÁVKA FUNKČNÍ MUSÍTE JI SPUSTIT Z ÚČTU S PRÁVY ADMINISTRÁTORA!
echo DÁVKA NESMÍ BÝT SPUŠTĚNA Z MÉDIA NA KTERÉ NELZE ZAPISOVAT!
echo --------------------------------------------------------------------------
echo Vyverte operaci:
echo Okamžitá akce:
echo 1 - Vypnout PC
echo 2 - Restartovat PC
echo 3 - Uspat PC
echo 4 - Odhlásit mne
echo.
echo Akce s časovým odkladem:
echo 5 - Vypnout PC
echo 6 - Restartovat PC
echo 7 - Uspat PC
echo 8 - Odhlásit mne
echo.
echo 9 - Nic neprovádět
echo 0 - Odvolat spuštěnou akci
echo.
echo Stiskněte klávesu s číslicí výběru pak stiskněte "Enter"
If not "%Key%"=="" set Key=
If not "%JdiNa%"=="" set JdiNa=
set /P Key= Váš výběr:
If "%Key%"=="1" (
shutdown -s
exit
)
If "%Key%"=="2" (
shutdown -r
exit
)
If "%Key%"=="3" (
start "" %windir%\system32\rundll32.exe PowrProf.dll SetSuspendState
exit
)
If "%Key%"=="4" (
shutdown -l
exit
)
If "%Key%"=="9" exit
If "%Key%"=="0" (
shutdown -a
exit
)
For /L %%I IN (5,1,8) DO If "%%I"=="%Key%" goto Mnu2
set JdiNa=Mnu1
goto ChybnaKlavesa
:Mnu2
cls
echo.
echo Vyverte čas akce:
echo 1 - Akce za 15 minut
echo 2 - Akce za 30 minut
echo 3 - Akce za 45 minut
echo 4 - Akce za 1 hodinu
echo 5 - Akce za 1 hodinu 30 minut
echo 6 - Akce za 2 hodiny
echo 7 - Akce za 2 hodiny 30 minut
echo 8 - Zadat vlastní čas
echo 9 - Nic neprovádět - Storno
echo.
echo Stiskněte klávesu s číslicí výběru pak stiskněte "Enter"
If not "%Key1%"=="" set Key1=
If not "%JdiNa%"=="" set JdiNa=
set /P Key1= Váš výběr:
If "%Key1%"=="8" Goto ZadatCas
If "%Key1%"=="9" exit
For /L %%I IN (1,1,7) DO If "%%I"=="%Key1%" (
If "%Key1%"=="1" set cas=900
If "%Key1%"=="2" set cas=1800
If "%Key1%"=="3" set cas=2700
If "%Key1%"=="4" set cas=3600
If "%Key1%"=="5" set cas=5400
If "%Key1%"=="6" set cas=7200
If "%Key1%"=="7" set cas=9000
)
:Spustit
If not "%Cas%"=="" If "%Key%"=="5" (
shutdown -s -t %Cas% -c "Probihá vypnuti PC vyvolane davkou Ukoncit cinnost. Odvolani provedete volbou v davce po jejim opetovnem spusteni"
exit
)
If not "%Cas%"=="" If "%Key%"=="6" (
shutdown -r -t %Cas% -c "Probihá Restart PC vyvolany davkou Ukoncit cinnost Odvolani provedete volbou v davce po jejim opetovnem spusteni"
exit
)
If not "%Cas%"=="" If "%Key%"=="7" (
echo.
echo Probíhá odpočet k uspání PC z %Cas% sekund
echo.
echo Odvolání provedete uzavřením okna dávky
ping -n %Cas% localhost >nul
start "" %windir%\system32\rundll32.exe PowrProf.dll SetSuspendState
exit
)
If not "%Cas%"=="" If "%Key%"=="8" (
echo.
echo Probíhá odpočet k odhlášení z %Cas% sekund
echo.
echo Odvolání provedete uzavřením okna dávky
ping -n %Cas% localhost >nul
shutdown -l
exit
)
set JdiNa=Mnu2
goto ChybnaKlavesa
:ZadatCas
cls
echo.
echo Prosím na následující řádek do pozice kurzoru zadejte čas ve formátu ...
echo.
echo hh:mm:ss
if not "%Cas%"=="" set Cas=
If not "%JdiNa%"=="" set JdiNa=
echo.
set /P Cas= Zadejte čas:
if "%Cas%"=="" (
del TMP.TXT
set JdiNa=ZadatCas
goto ChybnaKlavesa
)
echo %Cas%> TMP.TXT
For /F "tokens=1-3 delims=:" %%A IN (TMP.TXT) DO (
set Hodiny=%%A
set Minuty=%%B
set Sekundy=%%C
)
del TMP.TXT
if "%Hodiny:~0,1%"=="0" For /L %%I IN (0,1,9) DO If "%%I"=="%Hodiny:~1,1%" set Hodiny=%%I
If "%Hodiny%"=="0" goto CtrlMinut
set Cas=0
For /L %%I IN (0,1,23) DO If "%%I"=="%Hodiny%" set Cas=1
If "%Cas%"=="0" (
Cls
echo.
echo Vyskytla se chyba v zadání počtu hodin! 23 je maximum!
echo.
echo Vámi zadaný počet hodin.. "%Hodiny%"
echo.
pause
Goto ZadatCas
)
:CtrlMinut
if "%Minuty:~0,1%"=="0" For /L %%I IN (0,1,9) DO If "%%I"=="%Minuty:~1,1%" set Minuty=%%I
If "%Minuty%"=="0" goto CtrlSekund
set Cas=0
For /L %%I IN (0,1,59) DO If "%%I"=="%Minuty%" set Cas=1
If "%Cas%"=="0" (
Cls
echo.
echo Vyskytla se chyba v zadání počtu Minut! 59 je maximum!
echo.
echo Vámi zadaný počet minut.. "%Minuty%"
echo.
pause
Goto ZadatCas
)
:CtrlSekund
if "%Sekundy:~0,1%"=="0" For /L %%I IN (1,1,9) DO If "%%I"=="%Sekundy:~1,1%" set Sekundy=%%I
If "%Sekundy%"=="0" goto Vypocet
set Cas=0
For /L %%I IN (0,1,59) DO If "%%I"=="%Sekundy%" set Cas=1
If "%Cas%"=="0" (
Cls
echo.
echo Vyskytla se chyba v zadání počtu sekund! 59 je maximum!
echo.
echo Vámi zadaný počet sekund.. "%Sekundy%"
echo.
pause
Goto ZadatCas
)
:Vypocet
set /a Hodiny=Hodiny*3600
set /a Minuty=Minuty*60
set /a Cas=Hodiny+Minuty+Sekundy
Goto Spustit
:ChybnaKlavesa
cls
echo.
echo Byla stisknuta klávesa mimo povolený výběr!
echo.
If "%JdiNa%"=="Mnu1" echo Vámi stisknutá klávesa "%Key%"
If "%JdiNa%"=="Mnu2" echo Vámi stisknutá klávesa "%Key1%"
If "%Cas%"=="" echo Nebyl zadán čas!
echo.
pause
Goto %JdiNa%
Zkomprimovaná dávka ke stažení ... Soubor dávky se jmenuje UkoncitCinnost.cmd tedy volne přeloženo "Shutdown":