利用批处理如何将多个txt文件按行合并为一个新的txt文件?
如:1.txtabcd2.txtefgh合并后为merge.txtabefcdgh注意:是多个txt文件行合并,两个文件之间用空格间隔,谢谢...
如:1.txt
a b
c d
2.txt
e f
g h
合并后为merge.txt
a b e f
c d g h
注意:是多个txt文件行合并,两个文件之间用空格间隔,谢谢 展开
a b
c d
2.txt
e f
g h
合并后为merge.txt
a b e f
c d g h
注意:是多个txt文件行合并,两个文件之间用空格间隔,谢谢 展开
1个回答
展开全部
代码是可以写,为什么不说明是几个文件呢,没必要设个任意的嘛
@echo off&setlocal enabledelayedexpansion
::批处理文件存为XX.bat放要处理文件同位置执行
::下一行把多个文件名用半角逗号分开,如文件名有空格把那个文件名用引号括起来如
set fn=1.txt,2.txt,"3 a.txt"
for %%i in (%fn%)do (set "n=0"
for /f "usebackq delims=" %%j in ("%%~i")do (
set/a n+=1&call set "#!n!=%%#!n!%%%%j "))
:re
set/a n+=1
if defined #!n! goto re
set/a n-=1
(for /L %%h in (1,1,%n%)do set #%%h=!#%%h:~,-1!&echo.!#%%h!)>merge.txt
start merge.txt
@echo off&setlocal enabledelayedexpansion
::批处理文件存为XX.bat放要处理文件同位置执行
::下一行把多个文件名用半角逗号分开,如文件名有空格把那个文件名用引号括起来如
set fn=1.txt,2.txt,"3 a.txt"
for %%i in (%fn%)do (set "n=0"
for /f "usebackq delims=" %%j in ("%%~i")do (
set/a n+=1&call set "#!n!=%%#!n!%%%%j "))
:re
set/a n+=1
if defined #!n! goto re
set/a n-=1
(for /L %%h in (1,1,%n%)do set #%%h=!#%%h:~,-1!&echo.!#%%h!)>merge.txt
start merge.txt
追问
你好,总共有12个文件,谢谢
追答
那就帮你改一下,12个有点多,把它集中起来放一文件夹,批处理文件也放里面,不要有别的txt文件就行
@echo off&setlocal enabledelayedexpansion
if exist merge.txt del merge.txt
for /f "delims=" %%i in ('dir/b/a-d/on *.txt')do (set "n=0"
for /f "delims=" %%j in ('type "%%i"')do (
set/a n+=1&call set "#!n!=%%#!n!%%%%j "))
:re
set/a n+=1
if defined #!n! goto re
set/a n-=1
(for /L %%h in (1,1,%n%)do set #%%h=!#%%h:~,-1!&echo.!#%%h!)>merge.txt
start merge.txt
你说的问题我查过了,确实存在,但代码也没问题,只能说是bat命令中的一个bug,现换了种形式的可以通过,顺序问题它会按文件名排序
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询