批处理for/f的in()中如果出现延迟变量的符号!,为什么运行不了?

set/a"a=2"set/a"b=3"for/f"tokens=1*delims=|"%%iin('type%a%.txt^|findstr/i"txt\>"')doe... set/a "a=2"
set/a "b=3"

for /f "tokens=1* delims=|" %%i in ('type %a%.txt^|findstr/i "txt\>"') do echo %%i %%j >>%b%.txt
上面可以运行!但是把in ()中的%a%改成!a!,把%b%改成!b!就不行了
为啥啊?
展开
 我来答
hnsz2k
2012-10-17 · TA获得超过1582个赞
知道大有可为答主
回答量:1360
采纳率:100%
帮助的人:1438万
展开全部
如果要使用延迟变量,需要在前面加一行:

setlocal EnableDelayedExpansion
更多追问追答
追问
有的,加了。不行。不是声明的问题。
setlocal EnableDelayedExpansion
set/a "a=2"
set/a "b=3"
for /f "tokens=1* delims=|" %%i in ('type %a%.txt^|findstr/i "txt\>"') do echo %%i %%j >>%b%.txt
改成
for /f "tokens=1* delims=|" %%i in ('type !a!.txt^|findstr/i "txt\>"') do echo %%i %%j >>!b!.txt
就不行了?

是不是要用转义字符^,还是像%一样要用!!,变成!!a!!
追答
你把  !a! 改成 !a! 试一下,还有 !b!->  !b!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式