Stránka 1 z 1

Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeout

Napsal: 29 říj 2010 10:03
od Jan Pašek
Možná že jste si někteří všimli že sem se ve FAQ pustil do tvorby článku "Soubory *.bat; *.cmd Příkazový řádek a dávkové soubory" Momentálně mám rozdělané téma s příkazem Shutdown. Nerad bych do tohoto návodu dával neotestované dávky. Znáte to víc očí víc vidí a víc hlav příjde na víc chyb. Poprosil bych o testování následující dávky jež jak uvádí nadpis vykonává zmiňované činnosti v různých operačních systémech windows a o případné nahlášení chyb do tohoto topicu.
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":

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 11:20
od Luboš
Vyzkoušel jsem to v Windows 7 Ultimate. Restart, ukončení a stejné varianty s nastavením času fungují bez problémů. Jediný viditelný rozdíl: pokud kliknu přímo na tento dávkový příkaz pravou myší a vyberu Spustit jako správce, tak je to zobrazeno tak, že je všechno písmo dostatečně velké, ale když si z tohoto dávkového příkazu udělám zástupce na ploše a spustím ho jako správce, tak se zobrazí tak miniaturní okno, že mám problémy přečíst text. Na funkci příkazů to samozřejmě nemá vliv. Je zajímavé, že v příkazovém řádku se dají dělat takovéto pěkné činnosti i v posledních verzích Woken ...

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 11:57
od Jan Pašek
Děkuji za test
Na problém s velikostí okna pokud je spuštěno přes zástupce bych poradil zkusit vypnout nastavení velikosti okna dávky
2-hý řádek dávky uprav: rem mode con:lines=30 cols=90

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 12:09
od Luboš
Dík, pomohlo lines=24 cols=80

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 12:27
od Jan Pašek
No ty mi posíláš nové nastavení velikosti okna ten řádek tam v podstatě není úplně nutný a proto jsem ti napsal abys zkusil vypnutí. Důvod proč nastavuji velikost okna ... pokud napíšeš větší menu dochází k přetékání textu a vrchní řádky zmizí za horním okrajem okna. Tím že před příkaz napíšeš REM uděláš z příkazu poznámku která pokud je zapnuto ECHO OFF se ti při spuštění nezobrazí tudíž je takto příkaz vypnut bez toho že bys jej musel vymazat. Pokud tedy po vypnutí znovu nastanou problémy je jej také jednoduché znovu zapnout.
Takže shrnuto vypni mode con:lines=30 cols=90 a nenastavuj nové hodnoty velikost okna by měla naběhnout dle tvého defautního nastavení.

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 12:38
od Luboš
Jo, bez toho řádku je to lepší.

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 12:41
od Jan Pašek
Ha sorry asi sem tě sjel neprávem nastavení v dávce přepisuje v XP defaultní nastavení a okno CMD se již otvírá tak jak jej nastavila naposledy spuštěná dávka.
Vtom případě pro vás ostatní pokud jste ještě nezačali testovat vypněte druhý řádek ještě před prvním spuštěním dávky Pokud by docházelo k přetékání textu dejte vědět.

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 12:59
od Luboš
Takže změna: Windows 7 si také pamatují (asi) nastavení okna podle poslední dávky. Tentokráte jsem restartoval PC (protože stále testuji, takže pomocí tvého dávkového souboru) a pak jsem hned jako první příkaz znovu spustil ten dávkový příkaz a opět mrňavé okno - tentokráte v obou variantách (přímo i přes zástupce). Budu testovat dál a budu hledat příčinu.

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 29 říj 2010 13:31
od Jan Pašek
default nastavení
C:\Documents and Settings\cam>mode con

Stav zařízení CON:
------------------
Řádků: 300
Sloupců: 80
Rychlost opakování: 31
Prodleva před opakováním: 1
Znaková stránka: 852


v konečné verzi dávky příkaz úplně vypustím

Re: Pomoc test dávky Vypnutí,Restart,Spánek,Odhlášení+Timeou

Napsal: 09 pro 2010 12:37
od Jan Pašek
Po domácím testování je tu nová verze zmiňované dávky
Opravy a úpravy:
Do podmenu přidána náhrada klávesy Esc tedy únik při chybné volbě návrat o menu zpět.
Přepracována část pro vložení vlastního času vypnutí. (občas mi to vyhodilo nějakou tu chybu i když nebyla)
Do příkazu Shutdown pokud je spouštěn s časovým odkladem přidán parametr "-f" Uzavřít program bez upozornění (předtím se počítač nevypnul a zůstal vyset na dotazu "vypnout program - ano - ne") Do komentáře příkazu Shutdown přidáno upozornění na uložení souborů.