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

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

本帖最后由 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 . 我不太清楚怎么把源文件名保留起来.
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

另外,我还有个需求, 见代码:

TOP

  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

TOP

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

评分人数

TOP

非常感谢apang.
测试无误.

TOP

四楼的老师,你好

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

TOP

返回列表