Batch file 根据项目要求替换同一目录中的文件名

Batch file 根据项目要求替换同一目录中的文件名,batch-file,cmd,Batch File,Cmd,我有4种类型的图形:图形、表格、方程式和内联方程式 在同一目录中有500多个这样的图形。问题是我想将其转换为项目需求,如下所示: MUZ-171669-KH_eq_01.gif必须转换为muz12345169e001.gif MUZ-171669-KH_eq_03a.gif必须转换为muz12345169e03a.gif MUZ-171669-KH_fig_10.gif必须转换为muz123451690010.gif MUZ-171669-KH_fig_11a.gif必须转换为muz123451

我有4种类型的图形:图形、表格、方程式和内联方程式

在同一目录中有500多个这样的图形。问题是我想将其转换为项目需求,如下所示:

MUZ-171669-KH_eq_01.gif必须转换为muz12345169e001.gif

MUZ-171669-KH_eq_03a.gif必须转换为muz12345169e03a.gif

MUZ-171669-KH_fig_10.gif必须转换为muz123451690010.gif

MUZ-171669-KH_fig_11a.gif必须转换为muz12345169011a.gif

MUZ-171669-KH_ineq_01.gif必须转换为muz12345169r001.gif

MUZ-171669-KH_ineq_04a.gif必须转换为muz12345169r04a.gif

MUZ-171669-KH___01.gif必须转换为MUZ12345169T001.gif

MUZ-171669-KH_t_02b.gif必须转换为muz12345169t02b.gif

这意味着:

前缀MUZ必须转换为muz12345

项目代码编号171669必须转换为1669。根据1669、1670、1671等图形系列(即171670)进行的此更改必须转换为1670

171671必须转换为1671,依此类推

现在有四种类型的后缀图形名称:

它们应始终转换为4位,如下所示:

eq_01必须转换为e001

eq_03a必须转换为e03a

图10必须转换为0010

图11a必须转换为011a

ineq\U 01必须转换为r001

ineq_04a必须转换为r04a

t\u 01必须转换为t001

t_02b必须转换为t02b

有时出现eq\u 03a、图11a、ineq\u 04a、t\u 02b后缀。在这种情况下,它们应该像这样进行转换e03a、011a、r04a、t02b——仅四位数字

4图形的文件号介于000999,即00010999r001r999e001e999t001t999

我有下面的代码。但该代码不适用于图形和内联公式图形

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /f "tokens=1-7delims=-_." %%a IN ('dir /b /a-d "MUZ-*-*_*_*.gif" ') DO (
    IF "%%g"=="" (
        SET "num2=%%b"
        SET "fig=%%d"
        SET "num3=00%%e"
        REN "%%a-%%b-%%c_%%d_%%e.%%f" "muz12345!num2:~-4!!fig:~0,1!!num3:~-3!.%%f"
    )
)
GOTO :EOF

有人能帮忙吗?

在包含图像文件的目录中运行一个批处理文件,其中包含以下代码:

@echo off
setlocal EnableDelayedExpansion
for %%F in (MUZ-17????-KH_eq_??.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!e0!OldFileName:~17,2!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
for %%F in (MUZ-17????-KH_eq_???.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!e!OldFileName:~17,3!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
for %%F in (MUZ-17????-KH_fig_??.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!00!OldFileName:~18,2!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
for %%F in (MUZ-17????-KH_fig_???.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!0!OldFileName:~18,3!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
for %%F in (MUZ-17????-KH_ineq_??.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!r0!OldFileName:~19,2!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
for %%F in (MUZ-17????-KH_ineq_???.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!r!OldFileName:~19,3!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
for %%F in (MUZ-17????-KH_t_??.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!t0!OldFileName:~16,2!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
for %%F in (MUZ-17????-KH_t_???.*) do (
    set "OldFileName=%%~F"
    set "NewFileName=muz12345!OldFileName:~6,4!t!OldFileName:~16,3!%%~xF"
    ren "!OldFileName!" "!NewFileName!"
)
endlocal