批处理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!就不行了
为啥啊? 展开
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!就不行了
为啥啊? 展开
1个回答
展开全部
如果要使用延迟变量,需要在前面加一行:
setlocal EnableDelayedExpansion
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!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询