[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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

请教一下能实现吗??查了好多资料硬是鼓捣不出来,因为本身没什么基础,如各位前辈能赐教本人将万分感谢!

  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
复制代码

TOP

回复 4# bailong360


   经过测试,完美解决问题!非常非常感谢您!不过接下来想慢慢消化您写的代码,多学习一下。

TOP

回复 3# akb4888
已修改

TOP

回复 2# bailong360


    你好!非常感谢你的回复和帮助!
这个方法昨天已经经过某位前辈指点使用过了!
不过我的前提条件没有说完整,很抱歉!
因为同文件夹内还存在X05.01.05-08-1.01-0001.jpg这样的文件,而这类文件的文件名不用作修改,
所以用上面的代码会有点小问题…
一直在考虑用 if LSS这样的命令,可是不知道具体该怎么写。啊啊啊啊

TOP

本帖最后由 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. )
复制代码
1

评分人数

TOP

返回列表