需要一个批量处理文件(.bat), 从1.txt中删选删除2.txt 和3.txt里面的内容,输出为a.txt.

手头有一个可用的,但是我不会改成同是筛选2个txt的代码.,附上说明图.@echooffsetlocalenabledelayedexpansionfor/f"delim... 手头有一个可用的,但是我不会改成同是筛选2个txt 的代码.,附上说明图.@echo offsetlocal enabledelayedexpansionfor /f "delims=" %%i in (2.txt) do (set/a n+=1set arr[!n!]=%%i)for /f "delims=" %%i in (1.txt) do (for /l %%j in (1,1,!n!) do if "!arr[%%j]!"=="%%i" set flag=existif not "!flag!"=="exist" echo %%i>>a.txtset flag=)endlocal 展开
 我来答
乱世t逃犯
2017-01-12 · TA获得超过2780个赞
知道小有建树答主
回答量:1016
采纳率:75%
帮助的人:437万
展开全部
@echo off
setlocal enabledelayedexpansion
copy /b 2.txt+3.txt big.txt
for /f "delims=" %%i in (big.txt) do (
set/a n+=1
set arr[!n!]=%%i)
for /f "delims=" %%i in (1.txt) do (
for /l %%j in (1,1,!n!) do if "!arr[%%j]!"=="%%i" set flag=exist
if not "!flag!"=="exist" echo %%i>>a.txt
set flag=)
endlocal
del /f /q big.txt
pause>nul

用copy把2和3合并起来,不就成了原来的任务了吗,如果有第四个第五个txt,也可以用这样的办法,依次加到copy那一行。

追问

实验少量文本没出错,但是纯数字的话2.txt的第一行数字会出现在a.txt里面,

还有能不能在运行时候弹出的对话框中显示进度,因为要处理20w行左右的数据,没个进度条也不知道进行到什么程度了,或者设置完成后自动关闭窗口

文本

数字

追答
@echo off
setlocal enabledelayedexpansion
copy /b 2.txt+3.txt big.txt
set /a n=0
for /f "delims=" %%i in (big.txt) do (
set/a n+=1
echo.&echo 正在对比第!n!行 &echo.
set arr[!n!]=%%i)
for /f "delims=" %%i in (1.txt) do (
for /l %%j in (1,1,!n!) do if "!arr[%%j]!"=="%%i" set flag=exist
if not "!flag!"=="exist" echo %%i>>a.txt
set flag=)
endlocal
del /f /q big.txt
pause>nul

批处理实时进度条不好弄,但可以显示正在处理哪一行。

如果要处理完毕自动退出,请把最后pause那一句删掉。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式