批处理改文件名顺序问题

文件夹内容和文件名如图所示,每个R文件夹下都有一堆C开头的.jpg文件
图片描述

图片描述

将批处理文件放在与R同级的目录下,修改之后,输出的日志如图

图片描述

修改从R1直接到了R10接着又返回到了R2,图片也是同样的问题,不知道怎么改,望大佬指点!

附自己的bat文件

@echo off & setlocal EnableDelayedExpansion
set /a numjpg=0
set /a numfile=0
set ext=.jpg
echo 重命名瓦片
for /r . %%i in (*.jpg) do (
    if %%~ni equ C0 (set /a numjpg=0)
    echo 修改 %%i 文件名为 !numjpg!%ext% >>file.txt
    ren %%i !numjpg!%ext%
    set /a numjpg += 1
)
echo 重命名瓦片所在文件夹
for /f "delims=" %%i in ('dir /a:d /b') do (
    if %%~ni equ R0 (set /a numfile=0)
    echo 修改 %%i 文件夹名为 !numfile! >>file.txt
    ren %%i !numfile!
    set /a numfile +=1
)
pause>nul
阅读 4.9k
1 个回答

采用直接替换修改字符的方式解决问题,这样就不涉及排序问题了

@echo off & color 3a & setlocal enabledelayedexpansion
title 批量替换文件(文件夹)名
echo 此批处理可批量替换本文件所在文件夹下所有文件(文件夹)名。
echo.
set /p str1= 请输入要替换的文件(文件夹)名字符串(可替换空格):
set /p str2= 请输入替换后的文件(文件夹)名字符串(去除则直接回车):
echo.
echo 正在替换文件名……
for /f "delims=" %%a in ('dir /a-d /s /b') do (
if "%%~nxa" neq "%~nx0" (
set "f=%%~na"
set "f=!f:%str1%=%str2%!"
if not exist "%%~dpa!f!%%~xa" ren "%%a" "!f!%%~xa"
)
)
echo 替换文件名完成
echo.
echo 正在替换文件夹名……
:folder
set n=0
for /f "delims=" %%i in ('dir /ad /s /b ^|find "%str1%"') do (
set t=%%~ni
set t=!t:%str1%=%str2%!
if not exist "%%~dpi!t!" ren "%%i" "!t!" 2>nul
set /a n+=1
)
if "!n!" neq "0" goto folder
echo 替换文件夹名完成
pause
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进