取用變數
取用變數時,則需在變數前後加上%
echo %myname%
取消變數
取消變數時,只需依照設定變數的方式,但值是空白即可
set var=
變數的運算
set 使用 /a 參數,可使後面的敘述成為運算式
set var=6
set /a var+=3
延遲變數展開 (EnableDelayedExpansion)
在剛開始寫Batch的迴圈(for)的時候,都會遇到一個問題,就是在迴圈中,想要去改變
(set) 某個Variable的值,可是卻無法改變。
for /f
"tokens=1" %%Q in ('dir VIDEO\*.*/s^|find "個檔案"') do
set FileQty=%%Q
echo VIDEO資料夾內的檔案數量 [%FileQty%] 個檔案
輸出結果: VIDEO資料夾內的檔案數量 [0] 個檔案
要得到預想的結果就要使用setlocal EnableDelayedExpansion來延遲變數展開,使其在執行的階段才會被展開。
注意在取值時,要延遲展開的變數需使用
!var! 才會有效果。
for /f
"tokens=1" %%Q in ('dir VIDEO\*.*/s^|find "個檔案"') do
set FileQty=%%Q
echo VIDEO資料夾內的檔案數量 [!FileQty!] 個檔案
輸出結果: VIDEO資料夾內的檔案數量 [4 ] 個檔案
PS: 輸出的數值出現了,但是後方卻多了一個空白。
進行後續邏輯判斷會錯誤,可能是使用 !! 造成 (但是不使用又不行…)
延遲變數展開-再修正
for /f
"tokens=1" %%Q in ('dir VIDEO\*.*/s^|find "個檔案"') do
set /a FileQty=%%Q
echo VIDEO資料夾內的檔案數量 [!FileQty!] 個檔案
輸出結果: VIDEO資料夾內的檔案數量 [4] 個檔案 正確無誤
沒有留言:
張貼留言