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

[文件操作] 批处理怎样实现文件批量改名?

[复制链接]
发表于 2021-6-9 16:14:53 | 显示全部楼层 |阅读模式
当前目录下 有多个子目录 有图片若干 文件名命名规则相同
想通过批处理命令, 改所有子目录下的文件为4位数的自然数序列
图片数量不确定 都有效
辛苦,谢谢。

现有文件名              批处理后
image00001        0001
image00001+        0002
image00002        0003
image00002+        0004
image00003        0005
image00003+        0006
image00004        0007
image00004+        0008
image00005        0009
image00005+        0010
image00006        0011
image00006+        0012
image00007        0013
image00007+        0014
……        ……
发表于 2021-6-9 16:35:42 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-6-9 16:37 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4.     pushd "%%i"
  5.     set n=10000
  6.     for /f "delims=" %%a in ('dir /b /a-d') do (
  7.         set /a n+=1
  8.         ren "%%a" "!n:~1!%%~xa"
  9.     )
  10.     popd
  11. )
  12. pause
复制代码
 楼主| 发表于 2021-6-9 16:58:25 | 显示全部楼层
回复 2# qixiaobin0715


    谢谢

   我测试时发现 编号反了  如下  有+号的文件对应的是偶数 没有+号的是奇数

现有文件名               批处理后        现在的代码
image00001        0001          0002
image00001+        0002                0001
image00002        0003          0004
image00002+        0004         0003
image00003        0005         0006
image00003+        0006         0005
发表于 2021-6-9 18:16:12 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-6-9 18:38 编辑

回复 3# ykhq2021
如果像你所说的那么规律的话,可以这样:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /d %%i in (*) do (
  4.     pushd "%%i"
  5.     set /a n=10000,x1=0,y1=0
  6.     for /f "delims=" %%a in ('dir /b /a-d') do (
  7.         set "str=%%~na"
  8.         if "!str:~-1!"=="+" (
  9.             set /a x1+=1
  10.             set /a x2=2*x1+n
  11.             ren "%%a" "!x2:~1!%%~xa"
  12.         ) else (
  13.             set /a y1+=1
  14.             set /a y2=2*y1-1+n
  15.             ren "%%a" "!y2:~1!%%~xa"
  16.         )
  17.     )
  18.     popd
  19. )
  20. pause
复制代码
未测试
 楼主| 发表于 2021-6-9 18:27:28 | 显示全部楼层
回复 4# qixiaobin0715

辛苦了

测试 提示如下


    无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
发表于 2021-6-9 18:39:36 | 显示全部楼层
回复 5# ykhq2021
忘记加乘号了,已修改
 楼主| 发表于 2021-6-9 19:04:57 | 显示全部楼层
回复 6# qixiaobin0715


    测试成功 感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 17:22 , Processed in 0.021718 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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