大家好,我在.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 :(得分:0)
由于@LotPings,我解决了这个问题。
我刚刚在REN行中做到了这一点:
REN "%%a" "!csvname!.pdf"