 
- 帖子
- 640
- 积分
- 2841
- 技术
- 102
- 捐助
- 0
- 注册时间
- 2008-1-17
|
原帖由 Kiming 于 2009-5-29 20:42 发表 
@echo off
for /f "delims=" %%i in (test.txt) do (
if not defined %%i set %%i=s & echo %%i>>result.txt)
大概需要30 s就可以了
可是这段代码我有点不理解 不知LS的道能否解释下
if not defined %%i set %%i=s
这句就是保证单行输出的
当一个行第一次出现时,输出后给他一个赋值(随便什么数字都型),当下次它再次出现时,因为有上次的set ...=s
所以已经是"defined"了,自然后面的echo %%i>>result.txt就不会执行了
你把 if not defined %%i set %%i=s & echo %%i>>result.txt改成
if not defined %%i (echo %%i>>result.txt&set %%i=s ) 就容易理解了(注意加上括号)
但是这个代码有bug的,上楼就没有bug了
对于开头行是;还有行内含有空格,特殊字符的<>|等的行
for /f "eol= delim=" %a in (tmp.txt)do @if not defined "%a" @(echo.%a>>your.txt&set "%a=1")
都可以解决
[ 本帖最后由 plp626 于 2009-5-30 03:42 编辑 ] |
|