批次檔是Windows底下的一個小程式,只需要利用記事本寫下幾個命令並存成*.bat(batch,批次)就可以運作。最近在工作上有些動作是在反覆重複,因此在命令提示字元底下觀察相關教學,直到今天寫出了幾個有趣的小程式。分別為:定時關機、複製資料夾結構與檔案列表。
定時關機
好吧,我承認我使用太多的GOTO,這樣的寫法也為我引來不少的問題,不過我覺得能夠動就不錯了:P這邊還使用了排程的功能,可以設定定時或是倒數來關機。
複製資料夾結構
如果你有需求要複製一模一樣的資料夾結構,例如從C槽底下複製3個資料夾與底下的子資料夾到D槽,卻不要複製到裡頭存放的檔案,那麼可以參考使用ROBOCOPY這個指令,其中的關鍵在於 /NOCOPY以避免複製檔案,而/E可以複製子資料夾。
製作檔案列表
純粹想要知道資料夾底下有哪些檔案,如同DIR的功能一般,只不過順便存成記錄檔。
為什麼要公布原始碼,那是因為我這些資料取決於網路上,而我所得到的成果你也可以在網路尋找到。如果你認為很有用,甚至覺得改一改會變得更加有趣,希望你可以讓我知道來學習。畢竟我只是一個以電腦為興趣的人,有機會可以得到更多資訊會對我很有幫助。
定時關機
好吧,我承認我使用太多的GOTO,這樣的寫法也為我引來不少的問題,不過我覺得能夠動就不錯了:P這邊還使用了排程的功能,可以設定定時或是倒數來關機。
@echo off :Menu set jojo=%time% echo 很高興為您服務,我是關機精靈:) set /p Ser1="1)定時關機 2)重新開機 3)取消定時 4)開啟排程 5)關閉精靈 6)關於:" if %Ser1%==3 goto StopX if %Ser1%==4 start %SystemRoot%\Tasks if %Ser1%==5 goto ExitX if %Ser1%==6 goto AbouX set /p time="請問幾秒後執行此服務(若需排程定時執行,請輸入 t):" if %time%==t goto FixT if %time% LSS 0 goto Wrong if %Ser1%==1 goto ShutX if %Ser1%==2 goto RestX :AbouX CLS echo ************************************** echo ***** SHUTDOWN FAIRY ***** echo ***** LI-FONG CHEN ***** echo ***** January 10, 2010 ***** echo ************************************** pause CLS Goto Menu :Wrong CLS echo (╯-_-)╯╧╧ echo 別玩我啊,大哥,重新想一想吧! pause Cls Goto Menu :FixT echo 現在為%jojo% set /p hhss="請輸入時間(HH:MM)以執行程式:" if %Ser1%==1 at %hhss% shutdown -s if %Ser1%==2 at %hhss% shutdown -r CLS if %Ser1%==1 echo 現在為%jojo%,預計於%hhss%進行關機。 if %Ser1%==2 echo 預計於%hhss%進行排程重開,屆時會有30秒供您取消命令。 echo 您若想取消排程,請選擇 2)開啟排程,並手動刪除at1, at2...檔案, Goto ReMenu :ReMenu set /p Ser2="命令執行中,請問接下來要:1)取消定時 2)開啟排程 3)關閉精靈:" if %Ser2%==1 goto StopX if %Ser2%==2 start %SystemRoot%\Tasks if %Ser2%==3 goto ExitX CLS Goto Menu :ShutX shutdown -s -t %time% echo 命令執行中 CLS Goto ReMenu :RestX shutdown -r -t %time% CLS Goto ReMenu :StopX shutdown -a pause CLS Goto Menu :ExitX End
複製資料夾結構
如果你有需求要複製一模一樣的資料夾結構,例如從C槽底下複製3個資料夾與底下的子資料夾到D槽,卻不要複製到裡頭存放的檔案,那麼可以參考使用ROBOCOPY這個指令,其中的關鍵在於 /NOCOPY以避免複製檔案,而/E可以複製子資料夾。
@echo off :Menu set /p First="本程式將幫您複製資料夾結構但不包含檔案,請問是否執行?(y/n) if %First%==n goto Exit set /p From="來源資料夾路徑:" set /p To="目標資料夾路徑:" set /p Ans="本程式將幫您複製%From%資料夾結構到%To%,是否執行?(y/n)" if %ans%==n goto Menu robocopy %From% %To% /nocopy /E set /p Rea="本程式已經執行結束,是否有下一任務?(y/n)" CLS if %Rea%==y goto Menu :Exit End
製作檔案列表
純粹想要知道資料夾底下有哪些檔案,如同DIR的功能一般,只不過順便存成記錄檔。
@echo off :Menu echo 很高興為您服務,我將為您製作指定資料夾的檔案列表 set To=C:\ set /p From="來源資料夾路徑:" set /p To="檔案列表儲存於(預設為C槽,如不需更改請按Enter):" set /p Name="列表檔名:" set /p Ans="將幫您製作%From%的檔案列表%Name%.txt至%To%,是否執行?(y/n)" if %ans%==n goto Menu DIR %From% /S /B >>%To%\%Name%.txt set /p Rea="本程式已經執行結束,是否有下一任務?(y/n)" CLS if %Rea%==y goto Menu :Exit End
為什麼要公布原始碼,那是因為我這些資料取決於網路上,而我所得到的成果你也可以在網路尋找到。如果你認為很有用,甚至覺得改一改會變得更加有趣,希望你可以讓我知道來學習。畢竟我只是一個以電腦為興趣的人,有機會可以得到更多資訊會對我很有幫助。