标题: [文件操作] 【已解决】批处理根据文本中的文件名及对应的后缀字符串对文件重命名 [打印本页]
作者: 172043209 时间: 2017-6-19 23:41 标题: 【已解决】批处理根据文本中的文件名及对应的后缀字符串对文件重命名
折腾了许久,还是没能成功,在此求助大神,已在论坛搜索了同类帖子,http://www.bathome.net/thread-15815-1-1.html,很雷同,也是通过txt中提取空格或者直接由xls文件copy过来的分隔符前面的内容来判断需要改名的文件名中存在与否,存在则进行组合修改重命名该文件,否则则不修改。
唯一区别就是重命名的名字是:【前者和后者的组合】,如:
Names.txt文档信息:
C01-2016-JX1412-1.0001_001.jpg 20121000362裴宏业
C01-2016-JX1412-1.0001_002.jpg 20121000758赵佳伟
C01-2016-JX1412-1.0001_003.jpg 20121000761刘晨
C01-2016-JX1412-1.0001_004-1.jpg 20121000901毛茅弋
.........
重命名后为:(目的1)
C01-2016-JX1412-1.0001_001_20121000362裴宏业.jpg
C01-2016-JX1412-1.0001_002_20121000758赵佳伟.jpg
C01-2016-JX1412-1.0001_003_20121000761刘晨.jpg
C01-2016-JX1412-1.0001_004-1_20121000901毛茅弋.jpg
这里相当于在原文件名后面添加
或者:(目的2)
C01-2016-JX1412-1.0001_20121000362裴宏业.jpg
C01-2016-JX1412-1.0001_20121000758赵佳伟.jpg
C01-2016-JX1412-1.0001_20121000761刘晨.jpg
C01-2016-JX1412-1.0001_20121000901毛茅弋.jpg
这里相当于把原文件名"_"下划线后的部分替换为后面的部分
原贴里的语句:- @echo off
- for /f "tokens=1*" %%i in (a.txt) do ren "%%i" "%%j%%~xi"
- pause
复制代码
- @echo off
- for /r "d:\abc" %%a in (*.pdf) do (
- for /f "tokens=1,2 delims= " %%b in (a.txt) do (
- if "%%~nxa"=="%%b" ren "%%a" "%%c.pdf"
- )
- )
复制代码
使用后发现,不能保留原文件名,自己修改后,又把原文件名后缀一起带入到了新文件名中,如:
C01-2016-JX1412-1.0001_001.jpg_20121000362裴宏业.jpg
C01-2016-JX1412-1.0001_002.jpg_20121000758赵佳伟.jpg
C01-2016-JX1412-1.0001_003.jpg_20121000761刘晨.jpg
C01-2016-JX1412-1.0001_004-1.jpg_20121000901毛茅弋.jpg
从而达不到前面我的要求。
请大神抽空帮我(新手)修改一下。当前文件及子文件的文件一并处理。
谢谢!(尽管也可以利用原贴通过在xls文件多次修改来达到目的,但还是希望批处理能直接解决来得快)
作者: cfwyy77_bat 时间: 2017-6-20 08:46
试试这个 随便改了一下 其实会for 加其它几个命令就行了- @echo off
- setlocal enabledelayedexpansion
- for /f %%a in ('dir /s /b *.jpg') do (
- for /f "tokens=1,2" %%i in (names.txt) do (
- if %%~nxa == %%i ren %%a %%~na_%%j.jpg
- )
- )
- pause
复制代码
作者: 3518228042 时间: 2017-6-20 10:15
- @echo off
- for /f "tokens=1*" %%i in (Names.txt) do ren "%%i" "%%~ni_%%j%%~xi"
- pause
复制代码
或是这样
作者: 172043209 时间: 2017-6-20 18:39
谢谢!目的2在原来基础上再套用一个for,能都实现了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |