Board logo

标题: for 循环 嵌套的问题,请帮忙看看是什么问题 [打印本页]

作者: wtusm96     时间: 2010-5-12 12:59    标题: for 循环 嵌套的问题,请帮忙看看是什么问题

(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,是什么地方出了问题?
作者: Hanyeguxing     时间: 2010-5-12 13:53
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 ]
作者: wtusm96     时间: 2010-5-12 14:26
谢谢啦