批处理延迟变量

setSEQ_ROOT=%CD%cd%SEQ_ROOT%@echooffsetlocalenabledelayedexpansionsetma="AM4100D-MA"s... set SEQ_ROOT=%CD%
cd %SEQ_ROOT%

@echo off
setlocal enabledelayedexpansion
set ma="AM4100D-MA"
set sa=%SEQ_ROOT%\platform\kzbb\airmasters\pycfg\SQN3220_B3_7_20_38_40_41_42_43_MNC
for /f "tokens=1-2* delims= " %%i in (%sa%\bandsupport.txt) do (copy %SEQ_ROOT%\platform\kzbb\airmasters\pycfg\bootrom\AM4100D-MA.py %sa%\%%i.py
set da="%%i"
set ta=%%j
set ca=%%i.py
cd /d "%~dp0"
set "strma=(1<<3)|(1<<7)|(1<<20)|(1<<38)|(1<<40)|(1<<41)|(1<<42)|(1<<43)"
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* %sa%\!ca!') do (
if "%%b" == "" (echo.) else (
set "var=%%b"
set "var=!var:%strma%=%ta%!"
echo,!var!
)
))>#
move /y # %sa%\!a!
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* %sa%\!ca!') do (
if "%%b" == "" (echo.) else (
set "var1=%%b"
set "var1=!var1:%ma%=%da%!"
echo,!var1!
)
))>#
move /y # %sa%\!ca!
)

运行以上代码不会进行替换,认为da为空,延时变量在替换时怎么用,求大神
展开
 我来答
依梦琴瑶
高粉答主

2016-10-12 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
set "var=!var:%strma%=%ta%!"

改成

call set "var=%%var:!strma!=!ta!%%"


set "var1=!var1:%ma%=%da%!"

改成

call set "var1=%%var1:!ma!=!da!%%"



因为你的strma,ma,da这三个变量都在for中循环,开启环境变量延迟后,因此它们也需要用双感叹号,但var和var1两个变量也在for中循环,它们肯定也需要双感叹号,但那种替换的代码不可以双感叹号的变量里面再出现双感叹号的变量,因此只能通过call的方式转换一下。


由于我没有你的那些实际文件内容,所以没法测试,你自己尝试一下看看准不准确?

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式