.Batch重命名多个文件

时间:2017-08-25 09:54:50

标签: windows batch-file batch-rename

大家好,我在.batch中有这段代码:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=C:\Users\leandro.batista\Desktop\reni"
FOR /f "delims=" %%a IN ('dir /b /a-d "%sourcedir%\*.pdf" ') DO (
 SET "csvname=%%~na"
 IF NOT "!csvname:*_=!"=="!csvname!" (
  CALL :finddate

    REN *.pdf !csvname!.pdf 
    PAUSE
)
)


GOTO :EOF
:finddate
IF /i "%csvname:~-13%"=="" SET "csvname=%csvname:~0,-13%" 
IF "%csvname:*_=%"=="%csvname%" SET "csvname=%csvname:~0,13%"&GOTO :EOF  
SET "csvname=%csvname:*_=%"
GOTO finddate

所以是的,现在我来解释一下,我有:finddate提取文件名的一部分,然后我在for循环中使用它来重命名文件。
我正在做的是重命名同一文件夹中的多个文件,但我遇到的问题是它没有重命名多个文件,它只是重命名我1个文件,然后离开其他文件,并说已经有一个同名的文件存在,所以我认为我的循环不起作用,因为我希望它起作用。

文件名示例如下:

AAA_BBB_CCC_DDD_01_M73N_(REC9ago2017) BLA BLA BLA BLA BLA BLA 1008.pdf

我需要一些帮助解决这个问题。

1 个答案:

答案 0 :(得分:0)

由于@LotPings,我解决了这个问题。

我刚刚在REN行中做到了这一点:

REN "%%a" "!csvname!.pdf"