标题: [文件操作] [已解决]批处理如何按照列表替换部分文件名? [打印本页]
作者: gddsssko 时间: 2024-3-3 21:43 标题: [已解决]批处理如何按照列表替换部分文件名?
本帖最后由 gddsssko 于 2024-6-9 08:44 编辑
例如
按照列表(可以是txt、xls等,也可以直接写入bat中,大佬咋方便咋来)
AAA $aa1$
BB $bb1$
CCCC $cc2$
原文件夹名
你好AAA你好
大大AAA大大
大大AAA大大AAA
我好BB我好
他好CCCC他好
替换后
你好$aa1$你好
大大$aa1$大大
大大$aa1$大大$aa1$
我好$bb1$我好
他好$cc2$他好
作者: semiuel 时间: 2024-3-3 22:36
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b *.xls') do (
- set a=%%i
- set b=!a:AAA=$aa1$!
- ren "%%i" !b!
- )
复制代码
作者: ppll2030 时间: 2024-3-4 00:16
本帖最后由 ppll2030 于 2024-3-4 00:25 编辑
回复 1# gddsssko
把代码保存为bat文件,文件编码为ANSI。
更名规则附在代码后面了。修改规则可从13行开始,中间用空格分割即可。
运行代码可查看更名结果,请认真核对,确认代码无误后,再修改bat文件,
把第7行 “echo.&echo” 删除并保存,在运行一次即可完成更名。- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1* delims= " %%i in ('more +12 "%~f0"') do (
- for /f "delims=" %%v in ('dir /b /s /ad "*%%i*"') do (
- set x=%%~nxv
- set x=!x:%%i=%%j!
- echo.&echo ren "%%v" "!x!"
- )
- )
- pause
-
- :更名规则
- AAA $aa1$
- BB $bb1$
- CCCC $cc2$
复制代码
作者: aloha20200628 时间: 2024-3-4 10:20
处理目录须注意》力求深层目录处理在前,否则其真实路径可能会被动态修改...
一般是用如下句式获取目录列表,即加持反向排序
dir /b/s/ad|sort /r
作者: aloha20200628 时间: 2024-3-4 15:19
回复 1# gddsssko
批处理脚本处理目录时避免踩雷》目标目录不能是当前目录,不能是加持保护权限的目录,不能包含子目录,否则系统会拒绝更名
代码中第2行假设被处理的目标目录的根目录均为 d:\test 可被楼主修改
如下代码存为test.bat- @echo off &setlocal enabledelayedexpansion
- set/p "rootD=d:\test"
- for /f "delims=" %%D in ('dir /b/s/ad "%rootD%" ^|sort /r') do (
- set "d=%%~nxD" & for %%s in (
- "AAA/$aa1$"
- "BB/$bb1$"
- "CCCC/$cc2$"
- ) do for /f "tokens=1-2 delims=/" %%1 in ("%%~s") do if /i "!d!" neq "!d:%%1=!" (ren "%%~D" "!d:%%1=%%2!")
- )
- endlocal&exit/b
复制代码
作者: aloha20200628 时间: 2024-3-4 15:52
回复 1# gddsssko
5楼代码中的5-7行替换词用/作分隔符,并用双引号包裹,以防替换词中包含空格和避免包含^(&)等特殊字符出错...
作者: gddsssko 时间: 2024-3-4 18:26
回复 2# semiuel
感谢大佬
作者: gddsssko 时间: 2024-3-4 18:27
回复 5# aloha20200628
感谢大佬
作者: gddsssko 时间: 2024-3-4 18:27
回复 3# ppll2030
感谢大佬
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |