[請問] 請問延遲代換能解這個嗎?
test.bat
for /l %%a in (1,1,3) do (
echo %1
shift
)
執行:
test a b c
上面程式很簡單,只是想依序 echo 出 a,b,c 三個參數
shift 指令可以造成參數移位
但是 %1 被提早代換掉了
經查延遲代換
setlocal ENABLEDELAYEDEXPANSION
指令可以解一些在 for loop 內的代換問題
但經實驗,它對 %1 參數仍是不可延後的
所以此題無解嗎?
謝謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.197.63
→
12/02 13:32, , 1F
12/02 13:32, 1F
→
12/02 13:53, , 2F
12/02 13:53, 2F
→
12/02 13:53, , 3F
12/02 13:53, 3F
我繞一圈解掉了 XD
for %%a in (%1 %2 %3 %4 %5) do echo %%a
這樣也可以 XD
為什麼寫這種東西呢?
因為我很羨慕一種程式風格
command [notag] [simulate] [2] [3] [sku1.txt]
像這樣,中括號代表可以加參數,有五種參數,可加可不加,順序可對調
為了在批次檔中寫好,於是我用 %1 去檢查 user 下了什麼參數
再搭配 for, shift, 讓所有參數都變成 %1 被檢查一遍
因此現在新解法也能解決問題就是了
缺點是我只辨認九個參數,因為最後我沒用 shift
而 for 裏只能擺到 %9
※ 編輯: HuangJC 來自: 60.251.197.63 (12/02 13:57)
→
12/02 14:29, , 4F
12/02 14:29, 4F
推
12/02 14:43, , 5F
12/02 14:43, 5F