标题: [文件操作] 批处理怎样实现文件批量改名? [打印本页]
作者: 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 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /d %%i in (*) do (
- pushd "%%i"
- set n=10000
- for /f "delims=" %%a in ('dir /b /a-d') do (
- set /a n+=1
- ren "%%a" "!n:~1!%%~xa"
- )
- popd
- )
- 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
如果像你所说的那么规律的话,可以这样:- @echo off
- setlocal enabledelayedexpansion
- for /d %%i in (*) do (
- pushd "%%i"
- set /a n=10000,x1=0,y1=0
- for /f "delims=" %%a in ('dir /b /a-d') do (
- set "str=%%~na"
- if "!str:~-1!"=="+" (
- set /a x1+=1
- set /a x2=2*x1+n
- ren "%%a" "!x2:~1!%%~xa"
- ) else (
- set /a y1+=1
- set /a y2=2*y1-1+n
- ren "%%a" "!y2:~1!%%~xa"
- )
- )
- popd
- )
- 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 |