set /a : 在set後面加上 /a ,就可以進行運算相對應的符號有 + 加號,- 減號, / 除號, * 乘號 , %% 為除完後的餘數
set /p : 讓使用者自行填入變數
ex: set /p x=請填入生日: echo %x%
SET擴充的功能
整個變數要用 %% (或! !) 包起來
: ——— : 號是分隔線,在這之後就是取代的搜索和取代文字
find —— 變數內要備取代的文字
replace — 當被find找到的文字會被replace所設定的文字取代
取得子字串
可以把變數的文字切一小塊出來
ex:
%變數:~A,B%
set x=Don`t Do that
echo %x:~3,6%
輸出:
`t Do
在For或If內使用set /a,最好是把運算的部分用 "" 包起來
因為set後面的 ) 符號會影響IF的 ( 符號
ex:
If x = x (
set /a "x=3*(2+2)"
)
實用的內建變數
批次檔
大部分使用Dos指令都是使用批次檔,當執行批次檔時會有內建的變數
%~X — X是0到9,0代表這個批次檔,1到9是後面加的參數
echo %~0 //可能會是 c:\test_dir\test.bat,端看批次檔的位置
test.bat aaa.txt
echo 批次檔 : %~0,第一個參數 : %~1
輸出 : 批次檔 : c:\test_dir\test.bat,第一個參數 : c:\test_dir\aaa.txt
其中這個%~X功能前面可以增加參數
%~X – 顯示參數 X 檔案的完整路徑+檔名+副檔名
%~fX – 功能同上
%~dX – 顯示參數 X 檔案的磁碟機代號
%~pX – 顯示參數 X 檔案的路徑
%~nX – 顯示參數 X 檔案的檔名
%~xX – 顯示參數 X 檔案的副檔名
%~sX – 功能類似%~fX,但檔名是短檔名
%~aX – 顯示參數 X 檔案的檔案屬性
%~tX – 顯示參數 X 檔案的日期/時間
%~zX – 顯示參數 X 檔案的檔案大小
這些參數可以複合使用,如
%~dp0 顯示批此檔的完整路徑,但不包含檔名(常用)
%~nx0 顯示批次檔的檔名+副檔名
環境變數
%date% 顯示日期,星期的部分會依照windows設定的語言而改變
%time% 顯示時間,上下午的部分會依照windows設定的語言而改變
%CD% 顯示執行目錄,
%CMDCMDLINE% 執行這個檔案的原執行程式,一般是CMD.exe
%RANDOM% 0到32767之間的亂數