批处理删除重复行的代码看不懂,求教?
刚开始学习批处理,很多东西都看不明白,请教大家,
批处理之家的一个删除文本中重复行的帖子,内容如下:
有a.txt文件:
第一行
第一行
第二行
第二行
第二行
第二行
第三行
第三行
第三行
第二行
第三行
第二行
第四行
第四行
第四行
第五行
第四行
运行批处理后得到结果:
第一行
第二行
第三行
第四行
第五行
cd.>b.txt
set /a n=1
for /f %%a in (a.txt) do echo %%a>b.txt&&goto cmit
:cmit
for /f "skip=%n%" %%a in (a.txt) do (
setlocal enabledelayedexpansion
set /a n+=1
for /f %%b in (b.txt) do if "%%b"=="%%a" goto cmit
echo %%a>>b.txt
)
pause
上面这段代码看不明白,
1.是段落里几个for是啥关系。一层一层相互嵌套?
2.是这段代码删除重复行是啥思路?先从a.txt中取出每一行,然后和a.txt中所有行进行对比?
答案或建议:
第一个for的作用,只是取“第一行”放入b.txt,然后控制权交给后面,没有嵌套关系
第二个for的作用是主要的,获取除a.txt除第一行外的所有行,有嵌套关系
第三个for的作用,跳过b.txt中已经有的行
你运行下,看看屏幕显示就知道了
链接地址:http://www.baikewenda.com/h/1201/a30215.html
内容推荐: