需要一个批量处理文件(.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
展开
1个回答
展开全部
@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那一行。
追问
追答
@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那一句删掉。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询