一、set 篇:
1、set(無開關)
set .=test
set.
::若一個變量以:/.這三個與路徑相關的符號開頭,用set查看以該字符打頭的變量時可以省去一個空格。
echo %tmp:*/=%
::顯示tmp變量第一個/之后的部分,其余變量替換與變量偏移太簡單不解釋
2、set /p 變量名=注釋<設備名
當設備名為文件時,因為文件中換行符與回車符伴生,所以只取文件第一行作為var變量的內容,但是不超過1024字節;而當設備名為nul或者com3時,只顯示不換行的注釋,這種情況下可以省略變量名(如:set /p=Hello World
3、set /a,最具技巧的命令之一
set /a n=1,m=2
::同時把不同數值分別賦予兩個變量
set /a a=b=c=d=e=f=1
::用一條算式為多個變量同時賦值
set /a "1/n" 2>nul||echo 變量n非純數字或為零
::利用分母不能為0的特征,用set判斷一個變量是否為非零純數字
set n=1
set /a "n=!!123|!!234&!!0"
::位運算,!、^、|和&常用于布爾運算,而邏輯位移常用于二進制運算(>>還可判斷數值是否為負,見下例)
set /a n=-100,"1/(-100>>31)"||echo 變量n為負數
::順應cmd中的正負數存儲特點,可以用邏輯位移實現判斷正負數的“布爾運算”,可以衍生出繁多的算法,比如稍加改動就可以比較兩數甚至多個數的大小
set /a n=~-100
::利用~將所有二進制的1、0逆轉,負號在后或在前配合可以實現簡單加1或減1,這個技巧主要用來減少括號的使用,因為~號與負號的優先級都是高于算數運算符的
set /a test=%test:~5,1%-0
::可以避免%test:~5,1%為空時出錯的情況
set /a 十進制=0x十六進制,十進制=0八進制
::快速將十六進制與八進制數轉為十進制,可惜沒有二進制...
:loop
set /a n+=1001
echo %n:~-3%
goto loop
::這比常規的補位方法更優越
for %%a in (test 123 ABC test @#$ 123) do set /a ".%%a+=1"
set .|findstr /v /e "=1"
::經典的獲取字符串的重復次數的方案
二、for 篇:
這是批處理中最強的內部命令,沒有之一!
1、for(無開關)
::不帶參數的for與for /f配合,威力極大,僅舉此一例
新聞熱點
疑難解答