Board logo

标题: [文件操作] 批处理怎样实现文件批量改名? [打印本页]

作者: ykhq2021    时间: 2021-6-9 16:14     标题: 批处理怎样实现文件批量改名?

当前目录下 有多个子目录 有图片若干 文件名命名规则相同
想通过批处理命令, 改所有子目录下的文件为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
……        ……
作者: qixiaobin0715    时间: 2021-6-9 16:35

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

作者: ykhq2021    时间: 2021-6-9 16:58

回复 2# qixiaobin0715


    谢谢

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

现有文件名               批处理后        现在的代码
image00001        0001          0002
image00001+        0002                0001
image00002        0003          0004
image00002+        0004         0003
image00003        0005         0006
image00003+        0006         0005
作者: qixiaobin0715    时间: 2021-6-9 18:16

本帖最后由 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
复制代码
未测试
作者: ykhq2021    时间: 2021-6-9 18:27

回复 4# qixiaobin0715

辛苦了

测试 提示如下


    无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
作者: qixiaobin0715    时间: 2021-6-9 18:39

回复 5# ykhq2021
忘记加乘号了,已修改
作者: ykhq2021    时间: 2021-6-9 19:04

回复 6# qixiaobin0715


    测试成功 感谢




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