标题: [其他] [已解决]批处理怎样判断文件名长度并在指定位置添加字符? [打印本页]
作者: akb4888 时间: 2015-8-12 21:12 标题: [已解决]批处理怎样判断文件名长度并在指定位置添加字符?
本帖最后由 akb4888 于 2015-8-13 11:05 编辑
各位晚上好!
问题如下:
比如我有
X05.01-18-1-0001.jpg
X05.01-18-2-0001.jpg
X05.01-18-11-0001.jpg
这样的一堆文件,我想写一个批处理实现如下效果:
1.判断文件名长度(不含后缀),如果文件名长度为16个字符,则在第10个字符后加两个0
也就是原来的X05.01-18-1-0001.jpg重命名为X05.01-18-001-0001.jpg
2.判断文件名长度(不含后缀),如果文件名长度为17个字符,则在第10个字符后加一个0也就是原来的X05.01-18-11-0001.jpg重命名为X05.01-18-011-0001.jpg
请教一下能实现吗??查了好多资料硬是鼓捣不出来,因为本身没什么基础,如各位前辈能赐教本人将万分感谢!
作者: bailong360 时间: 2015-8-13 08:50
本帖最后由 bailong360 于 2015-8-13 10:34 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1-4 delims=-" %%i in ('dir /a-d /b *.jpg') do (
- set "_n=00%%k"
- if "!_n:.=!"=="!_n!" ren "%%i-%%j-%%k-%%l" "%%i-%%j-!_n:~-3!-%%l"
- )
复制代码
作者: akb4888 时间: 2015-8-13 09:47
回复 2# bailong360
你好!非常感谢你的回复和帮助!
这个方法昨天已经经过某位前辈指点使用过了!
不过我的前提条件没有说完整,很抱歉!
因为同文件夹内还存在X05.01.05-08-1.01-0001.jpg这样的文件,而这类文件的文件名不用作修改,
所以用上面的代码会有点小问题…
一直在考虑用 if LSS这样的命令,可是不知道具体该怎么写。啊啊啊啊
作者: bailong360 时间: 2015-8-13 10:34
回复 3# akb4888
已修改
作者: akb4888 时间: 2015-8-13 10:46
回复 4# bailong360
经过测试,完美解决问题!非常非常感谢您!不过接下来想慢慢消化您写的代码,多学习一下。
作者: WHY 时间: 2015-8-13 21:31
- @echo off & setlocal enabledelayedexpansion
- set "s=................\.jpg"
- for /f "delims=" %%i in ('dir /b /a-d^|findstr /i /b /e "%s% .%s%"') do (
- set "n=%%~ni"
- if "!n:~16!"=="" (set n=!n:~,10!00!n:~10!)else set "n=!n:~,10!0!n:~10!"
- ren "%%i" "!n!%%~xi"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |