::批處理實現自動關機.BAT<br />@ECHO off<br />TITLE 自動關機程式 作者:Micro_lee</p><p>:start<br />CLS<br />COLOR 0e<br />::使用COLOR命令對控制台輸出顏色變更<br />MODE con: COLS=49 LINES=25<br />::MODE語句為設定表單的寬和高<br />set tm1=%time:~0,2%<br />set tm2=%time:~3,2%<br />set tm3=%time:~6,2%<br />ECHO %date% %tm1%點%tm2%分%tm3%秒<br />ECHO ┏━━━━━━━━━━━━━━━━━━━━━━┓<br />ECHO ┃ 定時關機鎖定批次程式 Author:Micro_lee ┃<br />ECHO ┣━━━━━━━━━━━━━━━━━━━━━━┫<br />ECHO ┃ ┃<br />ECHO ┃ 1. 定時關機 ┃<br />ECHO ┃ 2. 倒計時關機 ┃<br />ECHO ┃ 3. 刪除定時關機任務 ┃<br />ECHO ┃ 4. 查看任務狀態 ┃<br />ECHO ┃ 5. 重新整理目前時間 ┃<br />ECHO ┃ 6. 重新啟動 ┃<br />ECHO ┃ 7. 鎖定電腦 ┃<br />ECHO ┃ 8. 登出 ┃<br />ECHO ┃ 9. 退出 ┃<br />ECHO ┃ ┃<br />ECHO ┃ 請選擇要進行的操作然後按斷行符號 ┃<br />ECHO.┗━━━━━━━━━━━━━━━━━━━━━━┛<br />:: 輸出空行,即相當於輸入一個斷行符號 </p><p>:Cho<br />SET Choice=<br />SET /P Choice=請輸入選擇項(1-9):<br />::設定變數"Choice"為使用者輸入的字元<br />IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%<br />::如果輸入大於1位,取第1位,比如輸入132,則傳回值為1<br />ECHO.<br />IF /I "%Choice%"=="1" GOTO SetHour<br />IF /I "%Choice%"=="2" GOTO outtime<br />IF /I "%Choice%"=="3" GOTO delAt<br />IF /I "%Choice%"=="4" GOTO view<br />IF /I "%Choice%"=="5" GOTO start<br />IF /I "%Choice%"=="6" GOTO restart<br />IF /I "%Choice%"=="7" GOTO lock<br />IF /I "%Choice%"=="8" GOTO logoff<br />IF /I "%Choice%"=="9" GOTO end<br />::為避免出現傳回值為空白或含空格而導致程式異常,需在變數外另加雙引號<br />::注意,IF語句需要雙等號<br />::如果輸入的字元不是以上數字,將返回重新輸入<br />ECHO 選擇無效,請重新輸入<br />GOTO Cho<br />ECHO.</p><p>:SetHour<br />CLS<br />ECHO.<br />SET ask=<br />SET /p ask=是否設定為每天執行關機命令(y/n):<br />IF NOT "%ask%"=="" SET ask=%ask:~0,1%<br />::如果輸入大於1位,取第1位,比如輸入yxz,則傳回值為y<br />IF /I "%ask%"=="y" GOTO yes<br />IF /I "%ask%"=="n" GOTO no<br />GOTO SetHour</p><p>:yes<br />ECHO 請指定24小時制式時間,格式為 小時:分鐘<br />SET shutdowntime=<br />SET /p shutdowntime=輸入:<br />at %shutdowntime% /every:M,T,W,Th,F,S,Su tsshutdn 0 /delay:0 /powerdown >nul<br />::設定為每周的星期一至星期日,即為每天<br />IF NOT errorlevel 1 GOTO ok<br />::如果輸入正確,就執行ok段的語句<br />ECHO %shutdowntime% 不是標準的時間格式,請重新輸入<br />ECHO.<br />GOTO yes</p><p>:no<br />ECHO 請指定24小時制式時間,格式為 小時:分鐘<br />SET shutdowntime=<br />SET /p shutdowntime=輸入:<br />at %shutdowntime% tsshutdn 0 /delay:0 /powerdown >nul<br />IF NOT errorlevel 1 GOTO ok<br />ECHO %shutdowntime% 不是標準的時間格式,請重新輸入<br />ECHO.<br />GOTO no</p><p>:ok<br />ECHO.<br />SET h=%shutdowntime:~1,1%<br />SET ah=%shutdowntime:~0,1%<br />SET am=%shutdowntime:~2,2%<br />SET bh=%shutdowntime:~0,2%<br />SET bm=%shutdowntime:~3,2%<br />IF "%h%"==":" (<br />SET HM=%ah%時%am%分<br />) ELSE (<br />SET HM=%bh%時%bm%分)<br />::如果輸入h:mm則HM=h時mm分,否則HM=hh時mm分<br />IF /I "%ask%"=="y" ECHO 系統將於每天的%HM%關閉<br />IF /I "%ask%"=="n" ECHO 系統將於%HM%關閉<br />ECHO 設定完畢! 按任意鍵繼續...<br />PAUSE >nul<br />GOTO start</p><p>:outtime<br />CLS<br />ECHO.<br />ECHO 請輸入倒計時秒數<br />ECHO ────────<br />ECHO (設定後要取消,單擊"確定"後按Ctrl+C鍵兩次)<br />SET timed=<br />SET /p timed=輸入:<br />tsshutdn %timed% /delay:0 /powerdown >nul<br />IF not errorlevel 1 GOTO ok<br />ECHO %timed% 是無效的關機時間,請重新輸入<br />ECHO.<br />GOTO outtime</p><p>:delAt<br />cls<br />echo.<br />at /del /y<br />echo 定時關機任務已取消,按任意鍵繼續...<br />pause >nul<br />GOTO start</p><p>:view<br />MODE con: COLS=85 LINES=18<br />COLOR 0e<br />ECHO.<br />at<br />ECHO 按任意鍵繼續...<br />PAUSE >nul<br />GOTO start</p><p>:restart<br />shutdown -r -t 0</p><p>:lock<br />rundll32.exe user32.dll,LockWorkStation<br />goto start</p><p>:logoff<br />logoff</p><p>:end<br />exit</p><p>