windows-commands
https://ss64.com/nt/
https://en.wikibooks.org/wiki/Windows_Batch_Scripting
參數
%n 還可以使用下列擴充語法,詳細內容可以使用 call /? 來參考:
%~1 - 展開 %1 並移除包圍的引號(")
%~f1 - 展開 %1 為一個完整合格路徑名稱
%~d1 - 只展開 %1 為磁碟機代號
%~p1 - 只展開 %1 為路徑
%~n1 - 只展開 %1 為檔名
%~x1 - 只展開 %1 為副檔名
%~z1 - 顯示 %1 的檔案大小
常見應用
%~dp0batch檔所在的目錄,常與%CD%作為比較,%CD%代表的是當前的工作目錄。
動態變數
都會重新計算一次。
%CD%
展開當前工作目錄的字串。
%RANDOM%
展開一個範圍0到32767間的整數。
%ERRORLEVEL%
展開目前ERRORLEVEL的值。
參考範例
在Batch 中取出字元的ASCII Number
輸出命令重新定向
清除原有內容後再寫入
COMMAND >> FILENAME
在原有內容後寫入
COMMAND < FILENAME
將FILENAME的內容傳入COMMAND
COMMAND_A | COMMAND_B
將COMMAND_A的output傳入COMMAND_B
常見應用
COMMAND > nul不印出輸出命令結果
cd
/d
同時切換磁碟機
del
/q
Quiet Mode。不會再次詢問是否刪除檔案。
endlocal
exit
/b
結束目前的batch script而不是cmd.exe。
/b [exitCode]
將ERRORLEVEL variable設為exitCode所設的數字。
findstr
/c:string
所要逐字搜尋的字串。若要搜尋多個字串,可用空白字元分隔。
/r /c:string
將string視為regular expression來使用。
for 迴圈
使用for 迴圈iterate 項目
for %%PARAMETER in (ITEM1 ITEM2 ITEM3 ...) do COMMAND
一次讀出字串並將其分成獨立的項目(tokens)
for /f ["OPTIONS"] %%PARAMETER in ("Text string to process") do COMMAND
一次讀出command的輸出並將其分成獨立的項目(tokens)
for /f ["OPTIONS"] %%PARAMETER in ('COMMAND_TO_PROCESS') do COMMAND
使用一段範圍的數字iterate
for /l %%PARAMETER in (start,step,end) do COMMAND
start - 起始數字
step - 迴圈數字所要增加的值,可為負數
end - 結束數字
OPTIONS
Key   | Description   |
delims=xxx   | 設定分隔字元(預設為空白字元),xxx表示可設定多個字元。   |
token=x,y   token=z*   token=m-n   |
用來決定要取出的item,並且放到parameter中。  若token=x,就取出第x項item。   token=x,y,若parameter設為%a,便取出第x與y項item分別置於%a和%b自動變數中。  token=z*,若parameter設為%a,取出第z項置於%a中,並將第z項後的所有item置於%b中。  若token=m-n,便取出第m至第n項。  |
if 判斷式
判斷檔案存在與否
if [not] exist FILENAME COMMAND if [not] exist FILENAME (COMMAND) else (COMMAND)
判斷文字字串是否相符 if [not] STRING1==STRING2 COMMAND
使用數值進行判斷 if [not] ITEM1 compare-op ITEM2 COMMAND if [not] ITEM1 compare-op ITEM2 (COMMAND) else (COMMAND)
/i
忽略大小寫。
compare-op:
EQU - Equal
NEQ - Not Equal
LSS - Less Than
LEQ - Less Than or Equal
GTR - Greater Than
GEQ - Greater Than or Equal
set
將變數設為文字字串
set VARIABLE=STRING
將變數設為數學運算後的值
set /a "VARIABLE=expression"
常見應用
set VARIABLE=VARIABLE初始化
set /a VARIABLE=HEX_NUMBER or OCT_NUMBER
可將十六進位數字(ex: 0x2F) 或八進位數字(ex: 057) 轉換成十進位數字。
setlocal
設定或取消延遲變數展開
setlocal {EnableDelayedExpansion | DisableDelayedExpansion}
EnableDelayedExpansion - 延遲變數展開
DisableDelayedExpansion - 取消延遲變數展開
補充說明
延遲變數展開 (EnableDelayedExpansion)
沒有留言:
張貼留言