簡介
批處理文件(batch file
)包含一系列 DOS
命令,通常用於自動執行重複性任務。可用於簡化很多重複工作。類似於Unix
的Shell
腳本。
windows 下批處理文件的擴展名爲bat.
bat命令
具體查看某個命令的用法 dos下輸入 [com] + /?
即可
ECHO
@
REM
@ #關閉當前行回顯
echo on #從下一行開始,打開回顯
echo off #從下一行開始,關閉回顯
echo. #輸出一個”回車換行”,空白行
@echo on #@和echo結合使用,從本行開始,打開回顯
rem #起註釋作用不執行
@rem #@和rem結合,不回顯的註釋
測試echo
@REM test bat cmd
@echo
@echo on
@echo
echo.
REM this line show
@REM this line not show
@echo off
setlocal enabledelayedexpansion
set min=5
set max=11
set str=abcd
set str2=abce
set str
echo %min% %max% !str!
set 和變量引用
set
作用主要是設置/顯示變量
set #顯示所有可用變量
set p #顯示所有以p開頭的變量
set p=aa1bb1aa2bb2 #設置變量p爲 aa1bb1aa2bb2
set /a d=15 #設置d爲15,數值類型,/a參數時=後面的變量可以不加%直接飲用
set /p p=please input. # /p表示用戶輸入,please input爲提示文案
set d=#取消d變量
#變量的引用
%d% #用兩個%
!d! #使用了 setlocal enabledelayedexpansion
if 判斷
if
和 else
結合用於一些條件判斷
@echo off
@REM 測試if語句
setlocal enabledelayedexpansion
set str=abcd
set str2=abce
echo %str% !str!
if /i !str! GTR !str2! (
echo !str! great than !str2!
) else (
echo !str! small than !str2!
)
for 循環
例如,求和 1…100
在 bat
中 for
set中變量引用使用%%var
@echo off
@REM 求和(1-100)
setlocal enabledelayedexpansion
set /a sum=0
for /l %%j in (1,1,100) do (
set /a sum =!sum!+%%j
)
echo sum=!sum!
choice
choice
主要功能跟用戶交互。
使用此命令可以讓用戶輸入一個字符,從而運行不同的命令。
如果不跟參數,默認是 y/n
使用時應該加/c:參數,c:後應寫提示可輸入的字符,之間無空格。它的返回碼爲1234……
@REM 測試choice選擇
@echo off
setlocal enabledelayedexpansion
choice
@REM 應該從數值高處開始判斷
if errorlevel 2 goto noHandler
if errorlevel 1 goto yesHandler
:noHandler
echo your input is N
goto end
:yesHandler
echo your input is Y
:end
endlocal
pause
goto 和 標籤
上面的用例,使用了goto
和 標籤:yesHandler
goto #跳轉到指定的標籤
:yesHandler #名稱爲yesHandler的標籤
小技巧
阻塞一定的時間,bat
沒有提供阻塞相應的方法,可以利用ping
和ping
超時解決。
ping -n 1 -w 200 192.0.2.2>nul #ping 命令阻塞 200ms -w爲超時時間單位ms, ip地址要填不存在的
ping -n 3 127.0.0.1>nul #ping 命令阻塞2s -n爲嘗試的次數,默認中間間隔1s
echo wait 2000ms--
其他變量和關鍵字
%random% #隨機數[0, 32767]
%errorlevel% #每個命令運行結束,可以用這個命令行格式查看返回碼,默認值爲0,一般命令執行出錯會設爲1
cls #清屏
pause #暫停命令
& #順序執行多條命令,而不管命令是否執行成功
&& #順序執行多條命令,當碰到執行出錯的命令後將不執行後面的命令
find “ok” c:test.txt && echo 成功
|| #順序執行多條命令,當碰到執行正確的命令後將不執行後面的命令
find “ok” c:test.txt || echo 不成功
示例應用,例如使用adb自動刷快手極速版
@echo off
setlocal enabledelayedexpansion
set min=10
set max=30
set /a mod=!max!-!min!+1
@REM 打開快手
adb shell am start -n com.kuaishou.nebula/com.yxcorp.gifshow.HomeActivity
@REM 暫停5秒
ping -n 5 127.0.0.1>nul
for /l %%i in (1,1,10000) do (
set /a r=!random!%%!mod!+!min!
@REM set t=%time:~0,8%
@REM echo !t!
echo %%i:!r!
ping -n !r! 127.0.0.1>nul
@REM 先點擊
adb shell input tap 590 1200
@REM 等1秒
ping -n 1 127.0.0.1>nul
@REM 在滑動
adb shell input swipe 600 1270 608 762
)
這裏介紹常用的bat
命令,還有很多其他的bat命令,我們可以需要的時候查找。