Board logo

标题: [文本处理] 批处理怎样合并文件夹里的多个文本文件? [打印本页]

作者: maoshan    时间: 前天 09:50     标题: 批处理怎样合并文件夹里的多个文本文件?

某文件夹里有多个文本文件,且每个文本文件中保存的数据最多不超过100个字符,计划将这些文本文件进行合并,合并时每个文本文件的名称(包括扩展名)和文件中的字符,保存在同一行。请给出批处理代码。百度给了一段代码
  1. @echo off
  2. setlocal
  3. :: 设置文件夹路径
  4. set "folderPath=F:\批处理测试\"
  5. :: 设置合并后的文件路径
  6. set "outputFile=F:\批处理测试\合并文件\merged.txt"
  7. :: 如果合并文件已存在,先删除
  8. if exist "%outputFile%" del "%outputFile%"
  9. :: 遍历文件夹中的所有文本文件
  10. for %%F in ("%folderPath%*.txt") do (
  11.     :: 读取文件内容到变量中(最多100个字符)
  12.     set "fileName=%%~nxF"
  13.     set "fileContent="
  14.     setlocal enabledelayedexpansion
  15.     for /f "usebackq delims=" %%A in ("%%F") do (
  16.         set "fileContent=%%A"
  17.         :: 由于每个文件最多100个字符,这里不需要额外的处理来截断内容
  18.         :: 如果需要确保不超过100个字符,可以使用以下命令(但这里假设内容已经符合要求)
  19.         :: set "fileContent=!fileContent:~0,100!"
  20.         goto :breakLoop !!  :: 跳出循环,因为假设每个文件只有一行
  21.     )
  22.     :breakLoop
  23.     endlocal & (
  24.         :: 将文件名和内容写入合并文件
  25.         echo !fileName! !fileContent!>> "%outputFile%"
  26.     )
  27. )
  28. echo 合并完成!
  29. pause
  30. endlocal
复制代码
运行结果是 merged.txt文件中,只有一行;“ !fileName! !fileContent!”,显然,变量中信息没有输入到文件中 求解。
作者: Batcher    时间: 前天 22:48

回复 1# maoshan
  1. @echo off
  2. REM 设置文件夹路径
  3. set "folderPath=F:\批处理测试\"
  4. REM 设置合并后的文件路径
  5. set "outputFile=F:\批处理测试\合并文件\merged.txt"
  6. (for /f "delims=" %%i in ('dir /b /a-d "%folderPath%\*.txt"') do (
  7.     set "fileName=%%i"
  8.     setlocal enabledelayedexpansion
  9.     set /p fileContent=<"!folderPath!\!fileName!"
  10.     echo !fileName! !fileContent!
  11.     endlocal
  12. ))>"%outputFile%"
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2