标题: 批处理替换文件名,20元求助 [打印本页]
作者: coolzq1980 时间: 2021-9-17 16:14 标题: 批处理替换文件名,20元求助
我的总文件夹下,有N个文件,N个文件夹,文件名(文件夹名)前面都是一样的,序号不一样,比如是(小猪1.jpg,小猪2.jpg,小猪3.png,小猪4.psd,.......)要替换成(小猫1.jpg,小猫2.jpg,小猫3.png,小猫4.psd,.......),文件夹更名也是同理
作者: Batcher 时间: 2021-9-17 17:14
回复 1# coolzq1980
test1.bat- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
-
- set "OldStr=小猪"
- set "NewStr=小猫"
-
- for /f "delims=" %%i in ('dir /b /ad') do (
- set "OldFolder=%%i"
- set "NewFolder=!OldFolder:%OldStr%=%NewStr%!"
- ren "!OldFolder!" "!NewFolder!"
- )
-
- for /f "delims=" %%i in ('dir /b /a-d') do (
- if "%%i" neq "%~nx0" (
- set "OldFile=%%i"
- set "NewFile=!OldFile:%OldStr%=%NewStr%!"
- ren "!OldFile!" "!NewFile!"
- )
- )
复制代码
作者: Batcher 时间: 2021-9-17 17:15
回复 1# coolzq1980
test2.bat- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
-
- set "OldStr=小猪"
- set "NewStr=小猫"
-
- for /f "delims=" %%i in ('dir /b') do (
- if "%%i" neq "%~nx0" (
- set "OldName=%%i"
- set "NewName=!OldName:%OldStr%=%NewStr%!"
- ren "!OldName!" "!NewName!"
- )
- )
复制代码
作者: cmd1152 时间: 2021-9-17 18:45
外面的小孩一直叫我,烦死了!复制代码
作者: qixiaobin0715 时间: 2021-9-17 21:36
本帖最后由 qixiaobin0715 于 2021-9-18 06:55 编辑
回复 1# coolzq1980
楼主几次说法都不统一。我第一次理解是修改目标文件夹下文件名及子文件夹名,第二次理解为修改子文件夹名及子文件夹下的文件名,不知道楼主到底是什么意思,现在只有理解为修改目标文件夹中所有目录中的名称(包括范围内的所有文件夹及文件)。受到版主的启示,代码可以这样写:- @echo off
- set "OldStr=小猪"
- set "NewStr=小猫"
- setlocal enabledelayedexpansion
- cd /d D:\abc
- for /f "delims=" %%a in ('dir /b /s ^|sort /r') do (
- set str=%%~nxa
- set str=!str:%OldStr%=%NewStr%!
- ren "%%a" "!str!"
- )
- pause
复制代码
注意事项:
1.假设目标文件夹为D:\abc;
2.不要把批处理文件放在目标文件夹下;
3.代码中的sort /r,是为了先修改内层文件及文件夹,防止循环中改名后,目录改变而引起找不到路径的情况。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |