标题: [文本处理] 批处理怎样合并文件夹里的多个文本文件? [打印本页]
作者: maoshan 时间: 前天 09:50 标题: 批处理怎样合并文件夹里的多个文本文件?
某文件夹里有多个文本文件,且每个文本文件中保存的数据最多不超过100个字符,计划将这些文本文件进行合并,合并时每个文本文件的名称(包括扩展名)和文件中的字符,保存在同一行。请给出批处理代码。百度给了一段代码- @echo off
- setlocal
-
- :: 设置文件夹路径
- set "folderPath=F:\批处理测试\"
-
- :: 设置合并后的文件路径
- set "outputFile=F:\批处理测试\合并文件\merged.txt"
-
- :: 如果合并文件已存在,先删除
- if exist "%outputFile%" del "%outputFile%"
-
- :: 遍历文件夹中的所有文本文件
- for %%F in ("%folderPath%*.txt") do (
- :: 读取文件内容到变量中(最多100个字符)
- set "fileName=%%~nxF"
- set "fileContent="
- setlocal enabledelayedexpansion
- for /f "usebackq delims=" %%A in ("%%F") do (
- set "fileContent=%%A"
- :: 由于每个文件最多100个字符,这里不需要额外的处理来截断内容
- :: 如果需要确保不超过100个字符,可以使用以下命令(但这里假设内容已经符合要求)
- :: set "fileContent=!fileContent:~0,100!"
- goto :breakLoop !! :: 跳出循环,因为假设每个文件只有一行
- )
- :breakLoop
- endlocal & (
- :: 将文件名和内容写入合并文件
- echo !fileName! !fileContent!>> "%outputFile%"
- )
- )
-
- echo 合并完成!
- pause
- endlocal
复制代码
运行结果是 merged.txt文件中,只有一行;“ !fileName! !fileContent!”,显然,变量中信息没有输入到文件中 求解。
作者: Batcher 时间: 前天 22:48
回复 1# maoshan - @echo off
- REM 设置文件夹路径
- set "folderPath=F:\批处理测试\"
- REM 设置合并后的文件路径
- set "outputFile=F:\批处理测试\合并文件\merged.txt"
- (for /f "delims=" %%i in ('dir /b /a-d "%folderPath%\*.txt"') do (
- set "fileName=%%i"
- setlocal enabledelayedexpansion
- set /p fileContent=<"!folderPath!\!fileName!"
- echo !fileName! !fileContent!
- endlocal
- ))>"%outputFile%"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |