中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 10:43
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for 循环 嵌套的问题,请帮忙看看是什么问题 查看 863 回复 2
楼 主 for 循环 嵌套的问题,请帮忙看看是什么问题 发表于 2010-05-12 12:59 ·  中国 广东 电信
新手上路
积分 7
发帖 7
注册 2009-01-29 23:08
17年会员
UID 137618
性别 男
状态 离线
(for /f "skip=1 stokens=1,2,3 delims=|" %%a in (c:\a.ini) do (
for /f "skip=1 stokens=1,2,3 delims=|" %%i in (c:\b.ini) do (
if /i %%a=%%i (
if /i %%c=%%j (
if /i %%b=%%k (.....)
) else (
.....
)))))

执行的时候报此时不应有=%i,是什么地方出了问题?
2 发表于 2010-05-12 13:53 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
1,if的语法是 if 1==1 echo.等于,而不是if 1=1 echo.等于。是if的语法错了,和for没关系
2,stokens=应该写成tokens=
3,尽量少嵌套if......else......,免得出错
4,尽量不要for嵌套去解析文件,你的代码完全可以写成:
@echo off&setlocal enabledelayedexpansion
for /f "skip=1 tokens=1-4 delims=:|" %%a in ('findstr /n .* "c:\a.ini"') do set "#%%a=%%b %%c %%d"
(for /f "skip=1 tokens=1-4 delims=:|" %%i in ('findstr /n .* "c:\b.ini"') do if /i "!#%%a!"=="%%b %%d %%c" (echo.相同)else echo.不同)>输出.txt

如果文本内第一列的内容完全不同,可以写成:
@echo off&setlocal enabledelayedexpansion
for /f "skip=1 tokens=1-3 delims=|" %%a in (c:\a.ini) do set "#%%a=%%b %%c"
(for /f "skip=1 tokens=1-3 delims=|" %%i in (c:\b.ini) do if /i "!#%%a!"=="%%c %%b" (echo.相同)else echo.不同)>输出.txt


[ Last edited by Hanyeguxing on 2010-5-12 at 14:16 ]
3 发表于 2010-05-12 14:26 ·  中国 广东 电信
新手上路
积分 7
发帖 7
注册 2009-01-29 23:08
17年会员
UID 137618
性别 男
状态 离线
谢谢啦
论坛跳转: