Board logo

标题: [其他] [已解决]批处理怎样判断文件名长度并在指定位置添加字符? [打印本页]

作者: 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 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-4 delims=-" %%i in ('dir /a-d /b *.jpg') do (
  4.     set "_n=00%%k"
  5.     if "!_n:.=!"=="!_n!" ren "%%i-%%j-%%k-%%l" "%%i-%%j-!_n:~-3!-%%l"
  6. )
复制代码

作者: 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

  1. @echo off & setlocal enabledelayedexpansion
  2. set "s=................\.jpg"
  3. for /f "delims=" %%i in ('dir /b /a-d^|findstr /i /b /e "%s% .%s%"') do (
  4.     set "n=%%~ni"
  5.     if "!n:~16!"=="" (set n=!n:~,10!00!n:~10!)else set "n=!n:~,10!0!n:~10!"
  6.     ren "%%i" "!n!%%~xi"
  7. )
  8. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2