Windows XP自動(dòng)關(guān)機(jī)的批處理文件
關(guān)機(jī)程序網(wǎng)絡(luò)上很多,今天咱們自個(gè)用批處理輕輕松松的DIY一個(gè),原理超級(jí)簡(jiǎn)單,看完之后自己做一個(gè)自己的定時(shí)關(guān)機(jī)程序。
最近出了不少電影,自己一個(gè)人也懶得去電影院了,就到網(wǎng)上下載回來(lái)晚上沒(méi)事的時(shí)候看。白天要上班,開(kāi)著電腦下載電影,用自動(dòng)關(guān)機(jī)程序設(shè)定好時(shí)間,等電影差不多下載完成了,就自動(dòng)關(guān)機(jī)。網(wǎng)上定時(shí)關(guān)機(jī)程序一大把,可咱就是想弄一個(gè)比較個(gè)性化的,自己DIY一個(gè)。
先來(lái)看看原理,Windows XP的關(guān)機(jī)是由Shutdown.exe程序來(lái)控制的,位于Windows\System32文件夾中,把這個(gè)程序跟批處理結(jié)合一下就可以DIY一個(gè)自動(dòng)關(guān)機(jī)程序出來(lái)了。
知道了相關(guān)原理之后,開(kāi)始寫(xiě)批處理了: @echo off title;;;;系統(tǒng)關(guān)機(jī) :loop cls color bc echo. echo. echo;;;;;*** WindowsXP;快速關(guān)機(jī)系統(tǒng) *** echo. echo;;;;;快速關(guān)機(jī)……………………請(qǐng)直接回車(chē) echo;;;;;開(kāi)始倒計(jì)時(shí)關(guān)機(jī)……………請(qǐng)輸入1+回車(chē) echo;;;;;設(shè)定時(shí)間點(diǎn)關(guān)機(jī)……………請(qǐng)輸入2+回車(chē) echo;;;;;顯示計(jì)時(shí)關(guān)機(jī)………………請(qǐng)輸入3+回車(chē) echo;;;;;設(shè)定每天關(guān)機(jī)………………請(qǐng)輸入4+回車(chē) echo;;;;;取消系統(tǒng)關(guān)機(jī)………………請(qǐng)輸入空格+回車(chē) echo;;;;;退出…………………………請(qǐng)輸入Q+回車(chē) echo. echo. set a= set /p a=;;;;;【 請(qǐng)輸入 】: 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;;;〖系統(tǒng)即將關(guān)機(jī)并結(jié)束進(jìn)程〗 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 "取消請(qǐng)運(yùn)行shutdown -a" exit :aaa @echo off color f4 echo. echo. echo. echo 現(xiàn)在將設(shè)置系統(tǒng)自動(dòng)關(guān)機(jī),請(qǐng)?jiān)诖溯斎氲褂?jì)時(shí)秒數(shù)后回車(chē),系統(tǒng)將在設(shè)定時(shí)間自動(dòng)關(guān)閉 set mytime= set /p mytimes=;【 倒計(jì)時(shí)關(guān)機(jī)請(qǐng)輸入 小時(shí)數(shù)】: set /a mytimes=%mytimes%*3600 set /p mytimef=;【 倒計(jì)時(shí)關(guān)機(jī)請(qǐng)輸入 分鐘數(shù)】: set /a mytimef=%mytimef%*60 set /p mytimem=;【 倒計(jì)時(shí)關(guān)機(jī)請(qǐng)輸入 秒;數(shù)】: set /a mytime=%mytimes%+%mytimef%+%mytimem% shutdown -s -t %mytime% -c "取消請(qǐng)運(yùn)行shutdown -a" cls echo. echo;〖系統(tǒng)將在%mytime%秒后關(guān)機(jī)〗 echo. pause goto loop :bbb @echo off color f9 echo. echo. echo. echo 現(xiàn)在將設(shè)置系統(tǒng)自關(guān)機(jī),請(qǐng)?jiān)诖溯斎腙P(guān)機(jī)時(shí)間(如12:00)回車(chē),系統(tǒng)將定時(shí)自動(dòng)關(guān)閉 set mytimes= set mytimef= set /p mytimes=;【 定時(shí)關(guān)機(jī)請(qǐng)輸入 時(shí)】: set /p mytimef=;【 定時(shí)關(guān)機(jī)請(qǐng)輸入 分】: at %mytimes%:%mytimef% shutdown -s -t 0 ::這表示在mytime分執(zhí)行shutdown -s -t 0操作.如果當(dāng)前時(shí)間大于任務(wù)執(zhí)行時(shí)間,則默認(rèn)為明日?qǐng)?zhí)行,0為倒計(jì)時(shí)時(shí)間. echo. echo;;;〖現(xiàn)在將顯示所有計(jì)劃〗 echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ at echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ pause ::顯示計(jì)劃并暫停 goto loop :ccc @echo off color f2 echo. echo. echo. echo;;;〖現(xiàn)在將設(shè)置取消系統(tǒng)自動(dòng)關(guān)機(jī)〗 echo. pause shutdown -a echo. echo. echo;;;〖現(xiàn)在將顯示所有計(jì)劃,在回車(chē)后取消計(jì)劃且無(wú)須確認(rèn)〗 echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ at echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ pause at /del /yes ::取消所有計(jì)劃并無(wú)須確認(rèn) cls echo. echo;;;〖系統(tǒng)已經(jīng)取消自動(dòng)關(guān)機(jī)〗 echo;;;;〖系統(tǒng)已經(jīng)取消所有計(jì)劃任務(wù)〗 echo. pause goto loop :eee @echo off color f4 echo. echo. echo. echo 現(xiàn)在將設(shè)置系統(tǒng)自動(dòng)關(guān)機(jī),請(qǐng)?jiān)诖溯斎氲褂?jì)時(shí)秒數(shù)后回車(chē),系統(tǒng)將在設(shè)定時(shí)間自動(dòng)關(guān)閉 set mytime= ::此行是為了清mytime變量值,以免在不注意的情況下存在變量值,此為一種好的習(xí)慣. set mytimes=0 ::賦值為0是為了使%mytimes%不致于無(wú)意義,下同. set mytimef=0 set mytimem=0 set /p mytimes=;【 倒計(jì)時(shí)關(guān)機(jī)請(qǐng)輸入 小時(shí)數(shù)】: set /a mytimes=%mytimes%*3600 set /p mytimef=;【 倒計(jì)時(shí)關(guān)機(jī)請(qǐng)輸入 分鐘數(shù)】: set /a mytimef=%mytimef%*60 set /p mytimem=;【 倒計(jì)時(shí)關(guān)機(jī)請(qǐng)輸入 秒;數(shù)】: 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秒后自動(dòng)關(guān)機(jī)〗 echo ******************* %wait% cls ) shutdown -s -t 0 goto loop :fff @echo off color f9 echo. echo. echo. echo 現(xiàn)在將設(shè)置系統(tǒng)每天運(yùn)行自關(guān)機(jī) echo. set myopengs= set /p myopengs=【重復(fù)設(shè)定請(qǐng)輸入單空格+回車(chē),單次及最后一次設(shè)定請(qǐng)回車(chē)】 echo. echo 請(qǐng)?jiān)诖溯斎腙P(guān)機(jī)時(shí)間(如12:00)后回車(chē),系統(tǒng)將定時(shí)關(guān)閉 echo. set mytimes= set mytimef= set /p mytimes=;【 定時(shí)關(guān)機(jī)請(qǐng)輸入 時(shí)】: set /p mytimef=;【 定時(shí)關(guān)機(jī)請(qǐng)輸入 分】: at %mytimes%:%mytimef% /every:M,T,W,Th,F,S,Su shutdown -s -f echo. echo;;;〖現(xiàn)在將顯示所有計(jì)劃〗 echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ at echo ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ pause ::顯示計(jì)劃并暫停 if "%myopengs%"==" " goto :fff goto loop
把批處理拷貝下來(lái),復(fù)制到記事本另存為bat文件即可。
