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

时间:2014-12-28 08:40:39

标签: batch-file cmd

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

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

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

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

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

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

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

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

MUZ-171669-KH_t_01.gif 必须转换为 muz123451669t001.gif

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

这意味着:

前缀 MUZ 必须转换为 muz12345

项目代码 171669 必须转换为 1669 。根据1669,1670,1671等图形系列的变化,即 171670 必须转换为 1670

必须将

171671 转换为 1671 ,依此类推。

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

它们应始终转换为 4位,例如:

必须将

eq_01 转换为 e001

必须将

eq_03a 转换为 e03a

fig_10 必须转换为 0010

fig_11a 必须转换为 011a

必须将

ineq_01 转换为 r001

必须将

ineq_04a 转换为 r04a

t_01 必须转换为 t001

t_02b 必须转换为 t02b

有时会出现 eq_03a,fig_11a,ineq_04a,t_02b 后缀。在这种情况下,它们应该像 e03a,011a,r04a,t02b 一样转换 - 仅限四个数字。

4图片的文件编号介于 000 999 之间,即 0001 0999 r001 r999 e001 e999 t001 t999

我有以下代码。但该代码不适用于图形和内联方程图形。

@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

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

@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