批处理改文件名顺序问题

发布于 2022-09-07 16:00:17 字数 874 浏览 24 评论 0

文件夹内容和文件名如图所示,每个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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眉目亦如画i 2022-09-14 16:00:17

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

@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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文