教程:Bat腳本編程之美
2.1 實現定時開關機的命令
Shutdown命令用于關閉、重啟或注銷計算機。它有以下主要參數:
/s : shutdown系統。用于關閉計算機。
/r : restart系統。用于重啟計算機。
/t {時間} : 設置要等待的秒數。用于定時執行關閉或重啟,如果不指定時間默認為30秒。
/c "注釋" :注銷屏幕上的消息。用于向用戶顯示關機或重啟消息。
/f : 操縱進程迫使應用程序和服務注銷。用于強制關閉某些進程。
/i : 顯示交互界面,讓用戶選擇關閉選項。
具體使用方法如下:
shutdown /s /t 0 立即關閉計算機
shutdown /s /c "系統即將關機" /t 30 30秒后關閉,并顯示提示信息
shutdown /r 重啟計算機,默認等待時間30秒
shutdown /r /t 60 60秒后重啟計算機
shutdown /s /f 強制關閉計算機
shutdown /s /c "系統即將重啟" /f /t 0 立即強制重啟計算機并顯示消息
如果不使用任何參數,直接輸入shutdown則進入交互界面,提示用戶輸入關閉選項。我們可以選擇:
1.關閉:關閉操作系統。
2.重啟:重啟操作系統。
3.注銷:注銷當前登錄用戶會話。
4.取消:取消操作并返回。
不使用參數的效果如下
2.2 del命令批量刪除文件
:
del {/p} {/f} {/s} {/q} {/a: | /a-} filenames
:
刪除文件前進行提示確認。 :
強制刪除只讀文件。 :
刪除指定文件夾及其中的所有子文件夾和文件。 :
安靜模式,不提示確認信息。 :
:只刪除存檔屬性的文件。 :
不刪除存檔屬性的文件。 :
filenames :要刪除的文件名,可以使用通配符*和?。
:
del e:\temp\*.doc 刪除e盤temp文件夾下所有.doc擴展名的文件。
del /s e:\temp 遞歸刪除e盤temp文件夾及其中的所有子文件夾和文件。
del /f /q e:\readonly.txt 強制刪除只讀的readonly.txt文件,不提示確認。
del /s /a:e:\*.bak 刪除e盤中所有存檔屬性的.bak文件。
\*.tmp ??刪除e盤中除.tmp文件外的所有文件。 :
2.3 批量修改文件擴展名的命令
rename命令用于重命名文件或文件夾,語法為:
rename [drive:][path]filename1 filename2
參數說明:
drive:是盤符,就是你要處理的是哪個磁盤的數據,比如C盤、D盤
path 是具體的路徑,就是你要處理的是哪個路徑下的數據
filename1 是需修改的文件的文件名
filename2 是修改后的文件的文件名
::比如下面這個命令,就是把 D:\test 這個路徑下的 1.txt 文件的文件名改為 1.log
rename?D:\test\1.txt?1.log
基于以上基礎,我們可以批量修改文件擴展名,比如常用的將jpg圖片改為png格式
::這里寫的是ren,而不是rename,是因為rename可以簡寫成ren,這里寫成rename也可以
::這里就是把d盤,test目錄下的jpg文件修改為png文件
ren?d:\test\*.jpg?*.png
2.4 清理回收站的定時任務
創建定時任務使用schtasks命令,語法為:
schtasks /create /sc schedule /mo modifier /d day /m months /i idletime /tn taskname /tr taskrun
參數說明:
/sc schedule :任務計劃類型,如HOURLY、DAILY、WEEKLY等
/mo modifier :修飾計劃,如每X小時、日期等
/d day :如果是周計劃,指定周幾,用數字或縮寫表示如1-7或MON-SUN
/m months :如果是月計劃,指定月份,用數字或縮寫JAN-DEC表示
/i idletime :空閑時間,即電腦空閑后多長時間運行任務
/tn taskname :任務名稱
/tr?taskrun????:要運行的命令或腳本
比如我們這里創建一個腳本bat批處理調用exe程序,每天晚上10點定時清理回收站
@echo off
schtasks /create /sc daily /tn "clearecyclebin" /tr "powershell.exe Clear-RecycleBin" /st 22:00
schtasks /query /tn "clearecyclebin"
pause
執行后效果如下
當到達預定時間時,系統會自動彈出一個窗口詢問是否執行計劃的工作項,而不是直接執行,如下
如果需要執行,輸入y,回車。如果不需要執行bat批處理調用exe程序,輸入n,然后回車
2.5 實現類似黑客帝國的碼雨
詳細代碼如下
@echo off
color 0a
:start
set num=0
set "echos= "
:num
set /a a1=%random%%%3
if "%a1%" == "1" set "a1= "
if "%a1%" == "2" set "a1= "
if "%a1%" == "0" set /a a1=%random%%%2
set echos=%echos%%a1%
set /a num=%num%+1
if "%num%" == "150" echo %echos%&goto :start
goto :num
pause >nul
exit
代碼逐行解釋如下
bat的可玩性還有很多,這里就不一一列舉了。以上只是說明大家可能低估了bat文件的作用。 其實它可以幫助我們解決日常工作中的很多小問題。 這是一個很好的例子。