批处理for循环内外同样的if语句判断语句执行效果不一样,请大侠帮忙看下。

@echooff&setlocalenabledelayedexpansionremo.hex文件中第55行内容为:":047FD40000000000A9"set"sr... @echo off&setlocal enabledelayedexpansion
rem o.hex文件中第55行内容为:":047FD40000000000A9"
set "src_file=o.hex"
set "z=047FD4"
for /f "delims=" %%i in (%src_file%) do (
set /a n+=1
set var=%%i
if !n!==55 set var1=%%i
set newStr1=!var1:~1,6!
rem if %newSTr1% EQU %z% (
rem echo ok1111
rem )
)
if %newSTr1% EQU %z% (
echo ok2222
)
pause>nul

for循环中的if %newSTr1% EQU %z% ()语句不执行打印ok1111,但是for循环外面的同样的语句再注释(rem)掉前面的for中的if判断后则能正确打印ok2222,这是为什么呢?for循环对if判断的条件有限制吗?
for循环if判断语句不注释的情况下,则运行时不打印ok1111,只提示"此时不应有 047FD4",并且也不会打印ok2222,求解
展开
 我来答
匿名用户
2015-01-25
展开全部

晕,你开启了变量延迟。而一部分知道用叹号 !来引用变量。

结果,又变成了 百分号 % 如下:

@echo off&setlocal enabledelayedexpansion

set "src_file=o.hex"

set "z=047FD4"

for /f "delims=" %%i in (%src_file%) do (

set /a n+=1

set var=%%i

if !n!==55 set var1=%%i

set newStr1=!var1:~1,6!

if !newSTr1! EQU !z!  echo ok1111)

pause>nul
更多追问追答
追问
不是很懂变量延迟,还有叹号和%号受变量延迟的影响,求进一步详解。
追答
在for 命令之内,如果要引用 在for中定义的变量,要用叹号 !。
如果变量延迟,不开启,无法取得变量值。
而开启变量延迟后。在 for 之外 。!和% 都可以用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式