鍍金池/ 問答/PHP  網(wǎng)絡(luò)安全/ 批處理改文件名順序問題

批處理改文件名順序問題

文件夾內(nèi)容和文件名如圖所示,每個(gè)R文件夾下都有一堆C開頭的.jpg文件
圖片描述

圖片描述

將批處理文件放在與R同級的目錄下,修改之后,輸出的日志如圖

圖片描述

修改從R1直接到了R10接著又返回到了R2,圖片也是同樣的問題,不知道怎么改,望大佬指點(diǎn)!

附自己的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
回答
編輯回答
選擇

采用直接替換修改字符的方式解決問題,這樣就不涉及排序問題了

@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
2018年8月28日 08:35