谁帮我做个批处理文件bat: 删除文本中重复的行。最好是WIN7系统64位能用,文本超过3G.

我做的是这样的,但文件一大上G的就没用了:
@echo off
:: 删除重复的行,但不能保留空行
(echo:& echo.)>str_.txt
for /f "delims=" %%i in (a.txt) do (
if not defined %%i set %%i=A & echo %%i>>str_.txt)

用Replace Pioneer来做,完全满足要求,而且简单快捷:
第一步. 删除A的重复行
1. 按ctrl-o打开文件A
2. 按ctrl-h打开replace对话框,设置如下:
在Replace页:
Replace Unit=Line
Search for Pattern下面填.*(表示任意行)
If下面填get_value($match)==1
(注:以上操作表示删除重复行)
打开Advance页:
Run following at the beginning of text 填 clear_values_all()
Run following for each matched unit 填 set_value($match,1)(注:set_value表示把每行记录下来)
3. 点击Replace,即删除了重复行,存盘。
第二步. 从文件B里删除与A重复的行
文件A的所有行现在已经记录在系统中,只要对B做以下操作:
1. 按ctrl-o打开文件B
2. 按ctrl-h打开replace对话框,设置如下:
在Replace页:
Replace Unit=Line
Search for Pattern下面填.*(表示任意行)
If下面填get_value($match)==1
(注:以上操作表示删除与A重复的行)
3. 点击Replace,即删除了与A重复的行,存盘。
Replace Pioneer 下载地址:http://www.mind-pioneer.comhttp://www.download.com
参考资料:www.mind-pioneer.com

原文本为 文本.txt
删除后为 文本1.txt
@echo off
for /f "delims=" %%i in ('type 文本.txt') do (
call :a1 %%i
echo %%i
)
pause
exit
:a1
find "%~1" 文本1.txt >nul 2>nul && goto :eof
echo %~1 >>文本1.txt
goto :eof追问

好几G的文件这个估计不行,这个软件我不会哦,看到上面那么多。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-26
@echo off
:: 删除重复的行,但不能保留空行
(echo:& echo.)>str_.txt
for /f "delims=" %%i in (a.txt) do (
findstr /bec:"%%i" str_.txt||echo %%i>>str_.txt)

你那个写法文本有多少不重复行会设置多少个变量,估计超出限制就没用了。
这个不使用变量,但肯定会很慢的,没办法批处理的效率就是这么低。本回答被提问者和网友采纳
第2个回答  2013-01-24
那当然了批处理程序一般很小,小到1KB大道100MB偶没听过G的。。。 。。。
相似回答
大家正在搜