作者HuangJC (吹笛牧童)
看板EZsoft
標題[請問] 請問延遲代換能解這個嗎?
時間Fri Dec 2 12:06:02 2011
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
1F:→ rick:請問你在哪一版?! 12/02 13:32
2F:→ HuangJC:有差?在 win7,但要寫給同事用,怕同事不同版 12/02 13:53
3F:→ HuangJC:如果有副作用,也許稍提醒一下,限制 win7 使用 12/02 13:53
我繞一圈解掉了 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)
4F:→ zop:這裡不是程式版,程式有版 12/02 14:29
5F:推 uj2003:XD 你很明顯誤會1F的意思了 12/02 14:43