.Batch重命名多个文件

问题描述:

好家伙我有这样的代码在.batch:.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 

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

+0

ren命令应与'REN重新命名当前文件 “%%一个” “csvname .PDF”'命令'IF/I“ %csvname:〜-13%“==”“SET”csvname =%csvname:〜0,-13%“'是无稽之谈:如果最后13个字符为空(意味着csvname为空),则缩短csvname以最后删除13个字符。 [编辑]您的问题以包含一些示例名称。 – LotPings

+0

它已被编辑,您现在可以看到文件的名称 –

+0

您期望什么,期望的结果是什么? – LotPings

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

我只是在REN线这样做:!

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