You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于文件名分组合并文本文件的CMD批处理实现需求

按文件名前缀分组合并文本文件的CMD批处理方案

我专门写了这个CMD批处理脚本,完美匹配你的需求——自动识别文件名前缀(比如the blue one这类带空格的前缀),把同前缀的文件合并成前缀 all.txt格式的文件:

@echo off
setlocal enabledelayedexpansion

:: 遍历所有txt文件,提取前缀
for %%f in (*.txt) do (
    set "filename=%%~nf"
    :: 去掉文件名末尾的数字和空格(比如"the blue one 1"变成"the blue one")
    set "prefix=!filename!"
    :loop
    if "!prefix:~-1!"==" " set "prefix=!prefix:~0,-1!" & goto loop
    if "!prefix:~-1!" geq "0" if "!prefix:~-1!" leq "9" set "prefix=!prefix:~0,-1!" & goto loop
    
    :: 避免合并目标文件本身(比如跳过xxx all.txt)
    if not "!prefix!"=="%%~nf" (
        :: 合并到目标文件,/b用二进制模式避免文本EOF问题
        copy /b "%%f"+"!prefix! all.txt" "!prefix! all.txt" >nul
    )
)

echo 合并完成!
pause

脚本关键细节说明:

  • 延迟变量扩展setlocal enabledelayedexpansion是处理带空格文件名的核心,确保循环里能动态修改和读取变量。
  • 智能前缀提取:通过循环逐步去掉文件名末尾的数字和空格,不管后缀数字是1位还是多位,都能精准提取出前缀部分。
  • 防自合并机制:判断前缀不等于原文件名,避免把已经生成的xxx all.txt再次合并到自身里。
  • 静默高效合并copy /b用二进制模式合并(避免文本文件的特殊EOF标记干扰),>nul隐藏复制过程的冗余输出,让脚本运行更清爽。

使用注意事项:

  • 把脚本保存为merge_files.bat,放到你的文本文件所在文件夹双击运行即可。
  • 如果需要覆盖式合并(而不是追加),可以把合并行改成:
    if not exist "!prefix! all.txt" copy /b "%%f" "!prefix! all.txt" else copy /b "!prefix! all.txt"+"%%f" "!prefix! all.txt"
    
  • 脚本完全兼容带空格的文件名,和你给出的the end 1.txt这类命名格式完美适配。

内容的提问来源于stack exchange,提问作者oneonezero

火山引擎 最新活动