求教BAT批处理合并TXT文本文件每段插入空行文件名空行

2025-03-23 07:38:26
推荐回答(4个)
回答1:

@echo off&setlocal Enabledelayedexpansion
set /p file=请把你包含TXT文件的文件夹拖到本窗口:&set "file=!file:"=!"
for /f "delims=" %%i in ('dir /a /b "%file%\*.txt"') do (
echo %%~ni>>"%file%\TMP2356688.txt"
echo.>>"%file%\TMP2356688.txt"
more "%%i">>"%file%\TMP2356688.txt"
echo.>>"%file%\TMP2356688.txt"
)
start "" "%file%\TMP2356688.txt"&exit

回答2:

用软件Replace Pioneer可以很容易满足你的要求,而且可以按需排序,只需按以下步骤操作:

1. 安装Replace Pioneer,按ctrl-h打开"Replace" 窗口
2. 点击Advanced页,在Insert Begin Text栏填入${BASE}\n,在Insert End Text栏填入\n,表示在首行加文件名(无后缀),尾行加\n表示换行
3. 把屏幕右下角Output File左边的">"符号改选为">> Append"表示追加模式
4. 点击Batch Replace打开Batch Runner菜单,表示对多文件处理
5. 点击Pick Files,用鼠标选择多个待处理文件
6. 如果需要,点击各列的抬头,对文件按需排序。
7. 选中Set output filename,把后面的${FILENAME}改为固定的结果文件名比如output.txt
8. 点击Batch Replace,所有文件就都追加到output.txt中了

回答3:

来段VBS,本机测试成功:

Dim strFolder, objFSO, objFolder,colFiles
Dim objFileName, strFiles, objFiles
Dim objAllFile

Const ForReading = 1

strFolder = "E:\STRORY"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files

For Each objFile in colFiles
objFileName = Split(objFile.Name,".")(0)
Set strFile = objFSO.OpenTextFile(objFile, ForReading)
colLines = strFile.ReadAll
strFile.Close

objFiles = objFiles & objFileName _
& vbCrLf & vbCrLf & colLines & vbCrLf & vbCrLf
Next

Set objAllFile = objFSO.CreateTextFile(strFolder & "\" & "ALL.TXT")
objAllFile.Write objFiles
objAllFile.Close

Set objFSO = Nothing
Wscript.Quit

脚本假设文件在一个文件夹中{没有子文件夹}。将代码保存。
文件夹为e:\story,输出为e:\story\all.txt。请按实际更改。

回答4:

@echo off
(for %%a in (*.txt) do (
echo %%~na&echo.
more /e "%%a"&echo.
))>c:\total.txt