批处理文件如果statment不会执行set命令

时间:2016-06-06 16:04:51

标签: batch-file

@echo off
setlocal enabledelayedexpansion
set chk=tru
set final=c:\users\user1\desktop
set var=c:\users\user1\desktop
    for %%s in (%final%) do (
        echo %%s
        echo %var%
        if %var%==%%s set chk=false
        echo %chk%
    )

两个字符串相同但if语句不会执行set命令 并更改chk变量。有人可以帮忙吗? 我是批处理脚本的新手,我不明白为什么这个剂量工作。 我认为这是一个我不知道的技术问题

2 个答案:

答案 0 :(得分:0)

for循环中的

使用感叹号来引用变量。试试这个:

subdomain.domain.com/project-1

并阅读EnableDelayedExpansion

答案 1 :(得分:0)

由于您正在循环中更改chk的值,因此所做的更改仅在下一次迭代中反映出来。因此你需要使用!而不是%立即查看更改。

@echo off
setlocal enabledelayedexpansion
set chk=tru
set final=c:\users\user1\desktop
set var=c:\users\user1\desktop
    for %%s in (%final%) do (
        echo %%s
        echo %var%
        if %var%==%%s set chk=false
        echo !chk!
    )