[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样合并文件夹里的多个文本文件?

某文件夹里有多个文本文件,且每个文本文件中保存的数据最多不超过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!”,显然,变量中信息没有输入到文件中 求解。

回复 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%"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表