如何修改.bat脚本使其放在父目录即可处理所有子目录文件按名建夹移动
批处理脚本修改方案
修改后完整代码
@echo off :: 递归遍历当前目录及所有子目录下的全部文件 for /R %%i in (*) do ( :: 排除脚本自身,避免被移动到子目录 if not "%%~ni" == "organize" ( :: 在文件所在目录创建同名文件夹,已存在时自动跳过报错 md "%%~dpi%%~ni" 2>nul :: 移动文件到对应同名文件夹 move "%%~i" "%%~dpi%%~ni\" ) )
核心修改说明
- 把原脚本的单层
for循环替换为for /R:/R参数开启递归遍历,自动扫描脚本所在父目录下的所有层级子目录中的文件 - 新增路径拼接逻辑:
%%~dpi是遍历到的文件的所在目录绝对路径,和不带后缀的文件名%%~ni拼接,保证文件夹创建在对应文件的同级目录,不会统一创建到脚本根目录 - 新增
2>nul参数:屏蔽文件夹已存在时的报错提示,不影响脚本正常运行
使用注意事项
- 脚本文件名必须为
organize.bat,如果修改了文件名,需要把代码中判断条件里的"organize"同步修改为不含后缀的新文件名,避免脚本自身被移动 - 首次运行前建议先备份重要文件,避免误操作造成文件丢失
内容的提问来源于stack exchange,提问作者ixcode
相关产品推荐
相关产品推荐

