联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
a=1 b=2 c=3 d=4 e=5
@echo off setlocal enabledelayedexpansion set t="0" for /f "delims=" %%i in (test.ini) do ( if /i "%%i"=="" set t="1" rem 测试可在此echo !t! if /i !t!=="0" echo %%i if /i !t!=="1" ( set tempi=%%i if "!tempi!"=="" set t="0" &echo %%i ) rem 测试可在此echo !t! ) pause
a=1 b=2
if /i !t!=="0" echo %%i
@echo off setlocal enabledelayedexpansion set t= for /f "delims=" %%i in (test.ini) do ( if /i "%%i"=="" set t="1" rem 测试可在此echo !t! if not defined t echo %%i if defined t ( set tempi=%%i if "!tempi!"=="" set t=&echo %%i ) rem 测试可在此echo !t! ) pause
@echo off&setlocal enabledelayedexpansion for /f "delims=" %%a in (a.txt) do ( set "var=%%a" if "!var:~0,1!"=="" set flag=a if not defined flag echo %%a ) pause
所谓的bug 在这里 if "!tempi!"=="" set t="0" &echo %%i &前面多了一个空格,所以导致 if /i !t!=="0" 判断不成立。 建议:楼主的变量赋值方式不太“健康”为什么一定要把引号赋在值内呢?
Originally posted by 26933062 at 2009-4-16 12:46: : Last edited by 26933062 on 2009-4-16 at 12:50 ]
Originally posted by fantasybb at 2009-4-16 12:53 PM: 哈哈,谢谢!我上上礼拜刚学的P:D所以代码不规范,呵呵。之所以用t=“0”就是因为有时候若用t=0有时候后面会“莫名其妙”地多个空格。现在明白了,哈哈:D 有劳两位了!
@echo off setlocal enabledelayedexpansion set t="0" for /f "delims=" %%i in (test.ini) do ( if /i "%%i"=="" set t="1" rem 测试可在此echo !t! if /i !t!=="0" echo %%i if /i !t!=="1" ( set tempi=%%i if "!tempi!"=="" set t="0"&echo %%i ) rem 测试可在此echo !t! ) pause
@echo off setlocal enabledelayedexpansion set t=0 for /f "delims=" %%i in (test.ini) do ( if /i "%%i"=="" set t=1 if !t!==0 echo %%i if !t!==1 ( set tempi=%%i if /i "!tempi!"=="" set t=0&echo %%i ) ) pause
Originally posted by s11ss at 2009-4-16 13:09: 防止变量不小心包含值附近的空格,应当写作: set "t=0"