批处理合并多个文本内容

2025-03-04 20:53:46
推荐回答(3个)
回答1:

@echo off & setlocal enabledelayedexpansion
set "file=1.txt 2.txt 3.txt"
set /a filenum=3
rem 在这里修改,文件名称之间用空格隔开,filenum是文件个数(注意文本文档的名称中间不能有空格)
(for /l %%n in (1 1 %filenum%) do (
set /a n+=1
for %%a in (%file%) do (
for /f "tokens=* delims=" %%i in (%%a) do (
set /a line+=1
if !line! equ !n! set /p=%%i set /a line=0)
echo.))>result.txt
pause

额。这样修改下不用无限嵌套了

回答2:

如果每个文件行数一样的话比较好办,不一样就复杂一些。
先写个一样的。
1、处理当前目录所有txt
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir/b/on *.txt') do (
set/a n+=1
set m=
for /f "tokens=*" %%j in ('type "%%i"') do (
set/a m+=1
set #!n!!m!=%%j))
(for /l %%i in (1,1,%m%) do (
for /l %%j in (1,1,%n%) do (
call echo !#%%j%%i!)))>a.out
start a.out
2、处理指定txt
@echo off
setlocal enabledelayedexpansion
set f=a.txt b.txt c.txt
for %%i in (%f%) do (
set/a n+=1
set m=
for /f "tokens=*" %%j in ('type "%%i"') do (
set/a m+=1
set #!n!!m!=%%j))
(for /l %%i in (1,1,%m%) do (
for /l %%j in (1,1,%n%) do (
call set/p a=!#%%j%%i!echo.
))>a.out

回答3:

我不知道用这个命令 type *.*>>a.txt 可不可以解决你的问题. 我一般都是这么合并CSV档案的.