如何让批处理脚本复制数组路径下所有子文件夹的TXT文件
批处理脚本修改:递归复制所有子目录的TXT文件并按字母排序
原脚本仅能复制指定主目录下的.txt文件,无法遍历子文件夹及更深层级目录。以下是修改后的脚本,可实现递归收集所有指定目录及其子目录的.txt文件,复制到目标目录且不保留原目录结构,同时按文件名字母顺序完成复制:
@echo off setlocal enabledelayedexpansion :: 定义源目录数组 set Arr[0]=M:\0_Backup_Keep set Arr[1]=M:\0_Delete set Arr[2]=M:\0_Reserved :: 定义目标目录 set "dest=M:\Test_txt" :: 创建临时文件用于存储排序后的文件路径 set "tempFile=%temp%\txtFilesList.tmp" :: 确保目标目录存在 if not exist "%dest%" mkdir "%dest%" :: 遍历所有源目录,收集所有.txt文件路径到临时文件 for /l %%n in (0,1,2) do ( echo 正在扫描目录: !Arr[%%n]! for /r "!Arr[%%n]!" %%f in (*.txt) do ( echo "%%f" >> "%tempFile%" ) ) :: 对临时文件中的文件路径按文件名排序,然后逐个复制到目标目录 echo. echo 开始按字母顺序复制文件... for /f "usebackq delims=" %%f in (`sort "%tempFile%"`) do ( copy "%%~f" "%dest%" >nul ) :: 清理临时文件 del "%tempFile%" >nul 2>&1 echo. echo 所有.txt文件已完成复制! echo. & echo ^>Press ANY key to EXIT . . . & pause >nul & Exit
关键修改说明:
- 使用
for /r递归遍历每个源目录下的所有子目录,匹配所有.txt文件 - 通过临时文件存储所有文件路径,利用
sort命令实现按文件名字母排序 - 增加
if not exist "%dest%" mkdir "%dest%"确保目标目录存在,避免复制失败 - 复制时使用
>nul屏蔽复制过程的输出,让脚本运行更简洁
效果验证:
按示例场景,目标目录M:\Test_txt最终会包含:ABC_1.txt、ABC_2.txt、ABC_3.txt、TF_1.txt、TF_2.txt、TF_3.txt,且按字母顺序排列。
内容的提问来源于stack exchange,提问作者Paul Black
相关产品推荐
相关产品推荐

