Windows CMD多目录文件归档需求:保留最新修改时间文件
批量处理多目录:保留最新文件,其余移至对应Archive子目录
针对你的需求——批量处理4个指定文件夹,仅保留每个文件夹内修改时间最新的文件,其余文件移动到该文件夹下的Archive子目录——我基于你提供的单目录脚本做了扩展修改,以下是适配你目录结构的完整脚本:
@Echo Off SetLocal EnableDelayedExpansion :: 定义需要处理的多个源目录(相对路径,基于脚本所在位置) Set "sourceDirs=Advisory_rate Internation_Project_Tracker1 Local_Project_Tracker Notification_Tracker" :: 遍历每个源目录 For %%D In (%sourceDirs%) Do ( Set "currentDir=%%D" :: 检查当前目录是否存在 If Not Exist "!currentDir!\" ( Echo 目录 !currentDir! 不存在,跳过处理 Continue ) :: 创建Archive子目录(如果不存在) If Not Exist "!currentDir!\Archive\" ( MD "!currentDir!\Archive" 2>Nul || ( Echo 创建 !currentDir!\Archive 失败,跳过该目录 Continue ) ) :: 进入当前源目录 CD /D "!currentDir!" 2>Nul || ( Echo 无法进入目录 !currentDir!,跳过处理 CD /D "%~dp0" Continue ) :: 遍历文件:跳过最新的1个,移动其余到Archive For /F "Skip=1 Delims=" %%A In ('Dir /B/A-D-H-L-S/O-D/TW *.*' ) Do ( Move /Y "%%A" "Archive\" >Nul 2>&1 ) :: 回到脚本所在目录 CD /D "%~dp0" ) Echo 批量处理完成! Pause Exit /B
关键修改说明:
- 批量目录定义:通过
sourceDirs变量列出所有需要处理的子目录,用空格分隔,完美适配你给出的四个目标文件夹。 - 延迟变量扩展:启用
EnableDelayedExpansion确保循环中变量能正确更新,避免路径解析错误。 - 自动创建Archive:每个目录处理前自动检查并创建
Archive子目录,无需手动提前创建。 - 相对路径适配:脚本放在
INPUT_FILES目录下时,直接使用相对路径即可,不用写冗长的绝对路径,更灵活。 - 错误处理:添加了目录不存在、创建失败、无法进入目录等情况的提示,避免脚本静默出错,方便排查问题。
- 全文件类型处理:把原脚本的
*.txt改成*.*,处理目录下所有类型文件;如果需要指定特定扩展名,改回*.xlsx或你需要的格式即可。
使用方法:
- 将上述脚本保存为
movefiles.cmd,放在C:\USERS\GARANG\DOCUMENTS\INPUT_FILES目录下。 - 双击运行脚本,或者在CMD中切换到该目录后执行
movefiles.cmd。 - 脚本会自动处理四个子目录,每个目录仅保留修改时间最新的文件,其余文件移动到对应
Archive子目录。
内容的提问来源于stack exchange,提问作者Shree S
相关产品推荐
相关产品推荐

