作者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