關機程序網絡上很多,今天咱們自個用批處理輕輕松松的DIY一個,原理超級簡單,看完之後自己做一個自己的定時關機程序。
最近出了不少電影,自己一個人也懶得去電影院了,就到網上下載回來晚上沒事的時候看。白天要上班,開著電腦下載電影,用自動關機程序設定好時間,等電影差不多下載完成了,就自動關機。網上定時關機程序一大把,可咱就是想弄一個比較個性化的,自己DIY一個。
先來看看原理,Windows XP的關機是由Shutdown.exe程序來控制的,位於Windows\System32文件夾中,把這個程序跟批處理結合一下就可以DIY一個自動關機程序出來了。
知道了相關原理之後,開始寫批處理了:
@echo off
title 系統關機
:loop
cls
color bc
echo.
echo.
echo *** WINDOWSXP 快速關機系統 ***
echo.
echo 快速關機……………………請直接回車
echo 開始倒計時關機……………請輸入1+回車
echo 設定時間點關機……………請輸入2+回車
echo 顯示計時關機………………請輸入3+回車
echo 設定每天關機………………請輸入4+回車
echo 取消系統關機………………請輸入空格+回車
echo 退出…………………………請輸入Q+回車
echo.
echo.
set a=
set /p a= 【 請輸入 】:
if "%a%"=="1" goto aaa
if "%a%"=="2" goto bbb
if "%a%"==" " goto ccc
if "%a%"=="" goto ddd
if "%a%"=="3" goto eee
if "%a%"=="4" goto fff
if "%a%"=="q" exit
goto loop
:ddd
@echo off
color e5
cls
echo.
echo.
echo 〖系統即將關機並結束進程〗
pause
echo.
::ntsd -c q -pn %run%
taskkill /f /t /im pfw.exe /f /t /im internat.exe /f /t /im explorer.exe
shutdown -s -f -t 0 -c "取消請運行shutdown -a"
exit
:aaa
@echo off
color f4
echo.
echo.
echo.
echo 現在將設置系統自動關機,請在此輸入倒計時秒數後回車,系統將在設定時間自動關閉
set mytime=
set /p mytimes= 【 倒計時關機請輸入 小時數】:
set /a mytimes=%mytimes%*3600
set /p mytimef= 【 倒計時關機請輸入 分鐘數】:
set /a mytimef=%mytimef%*60
set /p mytimem= 【 倒計時關機請輸入 秒 數】:
set /a mytime=%mytimes%+%mytimef%+%mytimem%
shutdown -s -t %mytime% -c "取消請運行shutdown -a"
cls
echo.
echo 〖系統將在%mytime%秒後關機〗
echo.
pause
goto loop
:bbb
@echo off
color f9
echo.
echo.
echo.
echo 現在將設置系統自關機,請在此輸入關機時間(如12:00)回車,系統將定時自動關閉
set mytimes=
set mytimef=
set /p mytimes= 【 定時關機請輸入 時】:
set /p mytimef= 【 定時關機請輸入 分】:
at %mytimes%:%mytimef% shutdown -s -t 0
::這表示在mytime分執行shutdown -s -t 0操作.如果當前時間大於任務執行時間,則默認為明日執行,0為倒計時時間.
echo.
echo 〖現在將顯示所有計劃〗
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
at
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pause
::顯示計劃並暫停
goto loop
:ccc
@echo off
color f2
echo.
echo.
echo.
echo 〖現在將設置取消系統自動關機〗
echo.
pause
shutdown -a
echo.
echo.
echo 〖現在將顯示所有計劃,在回車後取消計劃且無須確認〗
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
at
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pause
at /del /yes
::取消所有計劃並無須確認
cls
echo.
echo 〖系統已經取消自動關機〗
echo 〖系統已經取消所有計劃任務〗
echo.
pause
goto loop
:eee
@echo off
color f4
echo.
echo.
echo.
echo 現在將設置系統自動關機,請在此輸入倒計時秒數後回車,系統將在設定時間自動關閉
set mytime=
::此行是為了清mytime變量值,以免在不注意的情況下存在變量值,此為一種好的習慣.
set mytimes=0
::賦值為0是為了使%mytimes%不致於無意義,下同.
set mytimef=0
set mytimem=0
set /p mytimes= 【 倒計時關機請輸入 小時數】:
set /a mytimes=%mytimes%*3600
set /p mytimef= 【 倒計時關機請輸入 分鐘數】:
set /a mytimef=%mytimef%*60
set /p mytimem= 【 倒計時關機請輸入 秒 數】:
color a3
mode con cols=30 lines=4
set /a mytime=%mytimes%+%mytimef%+%mytimem%
SET wait=ping -n 2 127.0.0.1 ^>^nul
for /l %%n in (%mytime%,-1,0) do (
rem cls
echo *******************
echo 〖%%n秒後自動關機〗
echo *******************
%wait%
cls
)
shutdown -s -t 0
goto loop
:fff
@echo off
color f9
echo.
echo.
echo.
echo 現在將設置系統每天運行自關機
echo.
set myopengs=
set /p myopengs= 【重復設定請輸入單空格+回車,單次及最後一次設定請回車】
echo.
echo 請在此輸入關機時間(如12:00)後回車,系統將定時關閉
echo.
set mytimes=
set mytimef=
set /p mytimes= 【 定時關機請輸入 時】:
set /p mytimef= 【 定時關機請輸入 分】:
at %mytimes%:%mytimef% /every:M,T,W,Th,F,S,Su shutdown -s -f
echo.
echo 〖現在將顯示所有計劃〗
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
at
echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
pause
::顯示計劃並暫停
if "%myopengs%"==" " goto :fff
goto loop
把批處理拷貝下來,復制到記事本另存為bat文件即可。