如何用CMD的copy /b命令批量合并350个文件?
批量合并350个文件的简便方案
嘿,手动把350个文件名挨个敲进copy /b命令里?这活儿想想都头疼!给你几个高效的办法,轻松搞定批量合并:
方法1:利用CMD通配符(适合文件名有规律且排序正确的情况)
如果你的文件名是固定位数数字后缀(比如file000、file001…file349),直接用通配符就能一步到位:
copy /b file* newfile
⚠️ 注意:如果文件名是file1、file10这种非固定位数的,CMD的通配符排序会是file1→file10→file100…,不是按数字大小顺序来的,合并结果会出错!这种情况别用这个方法。
方法2:写个批处理脚本(精准控制合并顺序)
要是文件名排序没规律,或者你想严格按数字顺序合并,写个简单的批处理脚本就搞定:
@echo off setlocal enabledelayedexpansion :: 设置输出文件名 set "output=newfile" :: 如果输出文件已存在,先删除 if exist "%output%" del "%output%" :: 循环从0到349(对应你的350个文件) for /l %%i in (0,1,349) do ( :: 这里根据你的实际文件名修改,比如是file.%%i就改成file.%%i set "filename=file%%i" :: 逐个合并到输出文件 copy /b "%output%"+"!filename!" "%output%" ) echo 合并完成!
使用时只需要修改filename的格式和循环的起止数字(0到349正好是350个文件),双击运行脚本就行。
方法3:用PowerShell(更灵活的排序和合并)
如果你能用PowerShell,这个方法适配性更强,不管文件名是不是固定位数,都能按数字顺序合并:
# 替换成你的文件名前缀,比如file.的话就改成'file.' $prefix = 'file' # 获取所有匹配的文件,按数字后缀排序 Get-ChildItem -Path . -Filter "$prefix*" | Sort-Object {[int]$_.Name.Replace($prefix,'')} | # 以二进制模式读取并合并 Get-Content -Raw -Encoding Byte | Set-Content -Path "newfile" -Encoding Byte
这个命令会自动按文件名里的数字排序,然后把所有文件内容合并到newfile里,二进制文件也能完美处理。
额外提醒
- 合并前一定要备份原文件,避免操作失误导致文件丢失;
- 如果是二进制文件(比如视频、压缩包),必须用二进制模式合并(上面的方法都满足),不然会损坏文件;
- 确认合并顺序:很多文件的合并结果依赖顺序,比如拆分的压缩包,顺序错了就无法解压。
内容的提问来源于stack exchange,提问作者Wander Milder




