Board logo

标题: [文件操作] [已解决]批处理如何批量在文件名后添加数字序号/递增数字? [打印本页]

作者: chichenzhe    时间: 2012-9-4 16:52     标题: [已解决]批处理如何批量在文件名后添加数字序号/递增数字?

本帖最后由 pcl_test 于 2017-6-5 09:40 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. set "num=1"
  3. for /f "tokens=* delims=" %%i in ('dir /a-d /b /s *.txt') do (
  4.     ren "%%i" "!num!.txt"
  5.     set /a num+=1
  6. )
  7. pause
复制代码
我写的这个达不到我的要求.
我最终需要 改成:  原文件名_num.txt . 我不太清楚怎么把源文件名保留起来.
作者: chichenzhe    时间: 2012-9-4 17:08

另外,我还有个需求, 见代码:
作者: chichenzhe    时间: 2012-9-4 17:09

  1. @echo off & setlocal enabledelayedexpansion
  2. set "num=0"
  3. rem 初始化num, 已改名的文件,我们会用 _vvv 来标记.
  4. for /f "tokens=* delims=" %%i in ('dir /a-d /b /s *_vvv.txt') do (
  5.     set /a num+=1
  6. )
  7. rem 修改未改名的文件为 已改名文件的总数 + 1
  8. for /f "tokens=* delims=" %%i in ('dir /a-d /b /s *.txt && !*_vvv.txt') do (
  9.     ren "%%i" "!num!_vvv.txt"
  10.     set /a num+=1
  11. )
  12. pause
复制代码
由于我不知道我的意思用bat怎么表达, 所以我写的是伪代码. 相信你们能明白.
*.txt && !*_vvv.txt 的意思是 是*.txt 并且要排除 *_vvv.txt
作者: apang    时间: 2012-9-4 18:27

  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d/b/s *_vvv.txt 2^>nul') do set/a n+=1
  3. for /f "delims=" %%a in ('dir /a-d/b/s *.txt^|findstr /iev "_vvv.txt"') do (
  4.   set "FPath=%%a"&set "FName=%%~na"
  5.   set/a n+=1
  6.   setlocal enabledelayedexpansion
  7.   ren "!FPath!" "!FName!_!n!_vvv.txt"
  8.   endlocal
  9. )
复制代码

作者: chichenzhe    时间: 2012-9-4 21:43

非常感谢apang.
测试无误.
作者: yjwdjfqb    时间: 2013-10-18 01:39

四楼的老师,你好

如果把当前文件夹下(最好的数字以四位数形式显示,如0001):
jpg格式文件,批量更改为,图片_0001,图片_0002,如果有100张,就是图片_0010;
gif格式文件,批量更改为,动画_0001,动画_0002,如果有100张,就是动画_0010;
txt格式文件,批量更改为,文本_0001,文本_0002,如果有100个,就是文本_0010;
doc格式文件,批量更改为,文档_0001,文档_0002,如果有100个,就是文档_0010;




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