截断特定文件

时间:2019-06-06 12:58:42

标签: batch-file

我有几个具有相同目录的文件夹,其名称如下:

001_Trial1
002_Trial2
003_Trial3
Trial4
Trial5
004_Trial6
005_Trial7

等...

我想重命名文件夹以获得

Trial1
Trial2
Trial3
Trial4
Trial5
Trial6

等...

我试图截断它,但问题是当文件夹为“ Trial3”时,它还将删除前四个字符,并将其重命名为“ 3”。

SetLocal DisableDelayedExpansion
For /D %%A In ("%1\*") Do (

    Set "_d=%%~nxA"
    SetLocal EnableDelayedExpansion
    If Not Exist "%%~dpA!_d:~4!" Ren "%%A" "!_d:~4!"
    EndLocal
)

我希望所有输出均以“ Trial”开头

1 个答案:

答案 0 :(得分:0)

我在查看代码时注意到的第一件事是,您需要将%1替换为%~1,以消除引号。

然后,我将使用for /f来截断文件夹名称的第一部分,因此您不需要delayExpansion,并且代码可以处理开头或多或少位数的文件夹名称(并且当然不会重命名已经具有所需名称格式的文件夹。

for /D %%D in ("%~1\*") do (
    for /F "tokens=2 delims=_" %%N in ("%%~nD") do (
        if not exist "%%~dpD%%~N%%~xD" ren "%%~fD" "%%~N%%~xD"
    )
)