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

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

当前目录下 有多个子目录 有图片若干 文件名命名规则相同
想通过批处理命令, 改所有子目录下的文件为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
……        ……

回复 6# qixiaobin0715


    测试成功 感谢

TOP

回复 5# ykhq2021
忘记加乘号了,已修改

TOP

回复 4# qixiaobin0715

辛苦了

测试 提示如下


    无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或
八进制(021)。
存在一个重名文件,或是找不到文件。

TOP

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

TOP

回复 2# qixiaobin0715


    谢谢

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

现有文件名               批处理后        现在的代码
image00001        0001          0002
image00001+        0002                0001
image00002        0003          0004
image00002+        0004         0003
image00003        0005         0006
image00003+        0006         0005

TOP

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

TOP

返回列表