标题:
[文本处理]
请详细讲解一下去除重复行的批处理含义
[打印本页]
作者:
suseek
时间:
2011-6-22 20:26
标题:
请详细讲解一下去除重复行的批处理含义
@echo off
(for /f "delims=" %%a in (1.txt) do (
if not defined "%%a" echo %%a&set ""%%a"=a"
))>new.txt
作者:
batman
时间:
2011-6-22 20:32
楼主可参考此贴:
http://www.bathome.net/viewthrea ... p;highlight=defined
ps:当代码不止一行时请用code标签将代码括起来方便别人复制。。。
作者:
suseek
时间:
2011-6-22 21:31
%%a不是在FOR循环读文本第一行时就被赋值了?为什么还说没定义呢,我实在不懂,请详细点
作者:
tmplinshi
时间:
2011-6-22 21:59
本帖最后由 tmplinshi 于 2011-6-22 22:07 编辑
%%a 是用来
引用
所循环的行。
if not defined "%%a" echo %%a&set ""%%a"=a"
假设文本有以下几行:
测试
测试 1
测试
测试 2
执行过程为:
如果没有定义
"测试"
,则显示
测试
,并设置
"测试"
的值为
a
。
如果没有定义
"测试 1"
,则显示
测试 1
,并设置
"测试 1"
的值为
a
。
如果没有定义
"测试"
,则显示
测试
,并设置
"测试"
的值为
a
。(
"测试"
已经定义过,所以不显示这一行)
如果没有定义
"测试 2"
,则显示
测试 2
,并设置
"测试 2"
的值为
a
。
作者:
applba
时间:
2011-6-22 22:28
这个里面有一个思维转弯,最好自己慢慢想,别人说了也没有用。
作者:
Hello123World
时间:
2011-6-23 09:55
关键是这一句:
if not defined "%%a" echo %%a&set ""%%a"=a"
::如果不存在变量"%%a"就echo %%a,并且定义一个变量名为"%%a",变量值为a的变量。
::这两句一结合,重复行就变成变量名,然后就不会再次echo %%a,达到了去除重复行的目的。
欢迎光临 批处理之家 (http://bbs.bathome.net/)
Powered by Discuz! 7.2