标题: [文件操作] 求助批处理多轮遍历文件【匹配自定义关键词】改名【前缀自定义英文】 [打印本页]
作者: youxianwei 时间: 2022-3-21 14:57 标题: 求助批处理多轮遍历文件【匹配自定义关键词】改名【前缀自定义英文】
求助高手:多轮遍历文件【匹配自定义关键词】搜索改名【前缀自定义英文】
旧文件名=房屋建筑理论.url,房屋建筑规范.url,,,城市规划设计.url,城市规划方法.url,,,庭院景观教学.url,公园景观教学.url。。。。
自定义匹配关键词=建筑,规划,景观。。。。
前缀改名后=a建筑,b规划,c景观。。。。
新文件名=房屋a建筑理论.url,房屋a建筑规范.url,,,城市b规划设计.url,城市b规划方法.url,,,庭院c景观教学.url,公园c景观教学.url。。。。
网上抄到一个单轮遍历文件自定义搜索改名的操作,我想实现预定多轮自定义改名,提高改名效率,谢谢各位大神!!!- title 批量替换【子~件名】
- echo 此批处理可批量替换本文件所在文件夹下所有文件【子~件名】。
- echo.
- set /p str1= 请输入要替换的【子~件名】字符串(可替换空格):
- set /p str2= 请输入替换后的【子~件名】字符串(去除则直接回车):
- echo.
- echo 正在替换文件【子~件名】……
- for /f "delims=" %%a in ('dir /b /a-d') do (
- if "%%~nxa" neq "%~nx0" (
- set "file=%%a"
- set "name=%%~na"
- set "extension=%%~xa"
- call set "name=%%name:%str1%=%str2%%%"
- ren "!file!" "!name!!extension!" 2>nul
- )
- )
复制代码
其他思考- set "key_list=%key_list%建筑;"
- set "key_list=%key_list%规划;"
- set "key_list=%key_list%景观;"
- set "key_list="%key_list:~0,-1%""
- for %%i in (%key_list:;=";"%) do (。。。)
复制代码
作者: Batcher 时间: 2022-3-21 15:09
回复 1# youxianwei - @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- set "OldStr1=建筑"
- set "NewStr1=a建筑"
- set "OldStr2=规划"
- set "NewStr2=b规划"
- set "OldStr3=景观"
- set "NewStr3=c景观"
- for /f "delims=" %%a in ('dir /b /a-d ^| findstr /v /x "%~nx0"') do (
- set "name=%%~na"
- set "name=!name:%OldStr1%=%NewStr1%!"
- set "name=!name:%OldStr2%=%NewStr2%!"
- set "name=!name:%OldStr3%=%NewStr3%!"
- ren "%%a" "!name!%%~xa"
- )
复制代码
作者: qixiaobin0715 时间: 2022-3-21 16:41
本帖最后由 qixiaobin0715 于 2022-3-21 16:54 编辑
适用范围,文件名中不存在字符点(.)。可按照变量%var%值的格式自主添加关键词,未测试:- @echo off
- setlocal enabledelayedexpansion
- set var=建筑.a 规划.b 景观.c
- for %%a in (%var%) do (
- for /f "delims=" %%i in ('dir /b /a-d *%%~na*.url') do (
- set str=%%~ni
- set str=!str:%%~na=%%~xa%%~na!
- ren "%%i" "!str:.=!%%~xi"
- )
- )
- pause
复制代码
作者: youxianwei 时间: 2022-3-21 16:55
回复 3# qixiaobin0715
感谢!感谢!
作者: youxianwei 时间: 2022-3-21 16:55
回复 2# Batcher
感谢!感谢!
作者: youxianwei 时间: 2022-3-22 10:44
本帖最后由 youxianwei 于 2022-3-22 10:48 编辑
回复 3# qixiaobin0715
高手您好,请问为什么不能有小数点?,我的确发现会把原文件名中的【.】去除,还好影响不大。
作者: qixiaobin0715 时间: 2022-3-22 11:01
本帖最后由 qixiaobin0715 于 2022-3-25 15:13 编辑
回复 6# youxianwei
下面代码应当可以保留文件名中的点号,牺牲一点点效率,可以试试:- @echo off
- setlocal enabledelayedexpansion
- set var=建筑.a 规划.b 景观.c
- for %%a in (%var%) do (
- for /f "delims=" %%i in ('dir /b /a-d "*%%~na*.url"') do (
- set str=%%~ni
- set str=!str:.=:!
- set str=!str:%%~na=%%~xa%%~na!
- set str=!str:.=!
- ren "%%i" "!str::=.!%%~xi"
- )
- )
- pause
复制代码
作者: youxianwei 时间: 2022-3-22 12:16
回复 7# qixiaobin0715
谢谢,感谢您的专研精神!
作者: youxianwei 时间: 2022-3-22 12:47
本帖最后由 youxianwei 于 2022-3-22 13:39 编辑
回复 3# qixiaobin0715
高手您好,测试了一下,出现了个奇怪现象,
我想设定更多关键词,var代码太长,于是用^分行,但第六行以后的关键词程序就不识别了,请问如何解决这个问题呀?
set var=建筑.⑴ 规划.⑴ ^
景观.⑵ 庭院.⑵ ^
室内.⑶ ^
风景.⑷ ^
高效.⑸ ^
东西.⑹ ^
第七行关键词.⑺ ^ rem 为什么第七行开始就不识别了呢???
第八行关键词.⑻ ^
稍等上传测试文件,奇怪为什么上传失败??
作者: qixiaobin0715 时间: 2022-3-22 13:45
回复 9# youxianwei
这样啊。那就简单点。
把关键词一个一行保存为keywords.txt,格式如下:- (1) 建筑
- (1) 规划
- (2) 景观
- (2) 庭院
- (3) 室内
- ....
复制代码
将上面所有有关文件都放在同一个文件夹中,运行以下代码:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1*" %%a in (keywords.txt) do (
- for /f "delims=" %%i in ('dir /b /a-d *%%b*.url') do (
- set str=%%i
- ren "%%i" "!str:%%b=%%a%%b!"
- )
- )
复制代码
作者: youxianwei 时间: 2022-3-22 15:10
回复 10# qixiaobin0715
好的,谢谢您,我测试了半天,好像bat的代码分行输入最多分五行,再多就失灵了。
作者: youxianwei 时间: 2022-3-25 13:43
回复 11# youxianwei
高手您好,我实践发现有几个特殊字符无法运行,+,=,%,请问该如何写入var?谢谢,感谢
作者: Batcher 时间: 2022-3-25 13:54
回复 9# youxianwei
如需上传截图,请用图床:
http://bbs.bathome.net/thread-60985-1-1.html
如需上传附件,请用阿里云盘或百度网盘。
作者: qixiaobin0715 时间: 2022-3-25 14:42
本帖最后由 qixiaobin0715 于 2022-3-25 15:11 编辑
回复 12# youxianwei
+号应当没什么问题吧?
前两天就要你上传附件,你不说也不传。只能自己测试了。
如果有百分号就加倍,每个部分用引号分隔。试试吧。
7楼代码已修改。
好像不行。建议使用10楼的代码。
7楼代码已还原。
作者: youxianwei 时间: 2022-3-25 14:59
回复 14# qixiaobin0715
谢谢谢谢,我之前上传文件失败就没再传了。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |