修改批处理文件实现UNC路径下批量重命名文件与文件夹
适配UNC路径的批量重命名批处理(含子文件夹)
以下是修改后的批处理代码,支持UNC路径(如\\sharepoint\Sample),可递归处理所有子文件夹和文件,实现指定字符串的批量替换:
@echo off cls setlocal EnableExtensions EnableDelayedExpansion :: 输入目标路径(支持本地路径和UNC路径) set /p TargetPath=请输入目标目录路径(支持UNC路径,如\\sharepoint\Sample): :: 输入要替换的旧字符串和新字符串 set /p OldStr=请输入要替换的旧字符串: set /p NewStr=请输入要替换的新字符串: :: 递归处理子文件夹(从最深层开始,避免路径变更导致错误) for /f "delims=" %%i in ('dir /s /b /ad /o-n "%TargetPath%"') do ( set "FolderName=%%~nxi" if not "!FolderName:%OldStr%=!"=="!FolderName!" ( set "NewFolderName=!FolderName:%OldStr%=%NewStr%!" ren "%%i" "!NewFolderName!" ) ) :: 递归处理所有文件 for /r "%TargetPath%" %%i in (*) do ( set "FileName=%%~nxi" if not "!FileName:%OldStr%=!"=="!FileName!" ( set "NewFileName=!FileName:%OldStr%=%NewStr%!" ren "%%i" "!NewFileName!" ) ) endlocal pause
关键修改说明
- 支持UNC路径:不再固定使用脚本所在路径,改为让用户输入目标路径,兼容本地路径和UNC网络共享路径
- 递归处理子文件夹:使用
dir /s /b /ad /o-n命令递归列出所有文件夹,并按深度倒序排列(从最深层到最上层),避免修改上层文件夹后,下层文件夹路径失效的问题 - 通用字符串替换:原代码通过截取字符串前3位实现替换,改为通用的子串替换逻辑
!Var:%OldStr%=%NewStr%!,适配任意长度的替换字符串 - 避免无效操作:增加判断,仅当文件名/文件夹名包含旧字符串时才执行重命名,减少不必要的命令执行
使用方法
- 将上述代码保存为
批量重命名.bat - 双击运行,按照提示依次输入:
- 目标目录路径(如
\\sharepoint\Sample或D:\Test) - 要替换的旧字符串(如
sam) - 要替换的新字符串(如
CPL)
- 目标目录路径(如
- 等待脚本执行完成,按任意键退出
内容的提问来源于stack exchange,提问作者Vahid Eisapour
相关产品推荐
相关产品推荐

