找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31875|回复: 5

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

[复制链接]
发表于 2015-8-12 21:12:11 | 显示全部楼层 |阅读模式
本帖最后由 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

请教一下能实现吗??查了好多资料硬是鼓捣不出来,因为本身没什么基础,如各位前辈能赐教本人将万分感谢!
发表于 2015-8-13 08:50:04 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
akb4888 + 1 热心助人!

查看全部评分

 楼主| 发表于 2015-8-13 09:47:22 | 显示全部楼层
回复 2# bailong360


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


   经过测试,完美解决问题!非常非常感谢您!不过接下来想慢慢消化您写的代码,多学习一下。
发表于 2015-8-13 21:31:07 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 19:00 , Processed in 0.019811 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表