大家好,我用.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循环中使用它来重命名文件。
我正在做的是重命名同一文件夹中的多个文件,但我遇到了一个问题,它没有重命名多个文件,它只是重命名了一个文件,然后离开了其他文件,并说有一个同名的文件已经存在,所以我认为我的循环没有像我希望的那样工作。
文件名示例如下:
AAA_BBB_CCC_DDD_01_M73N_(REC9ago2017) BLA BLA BLA BLA BLA BLA 1008.pdf我需要一些帮助来解决这个问题。
发布于 2017-08-25 18:11:57
多亏了@LotPings,我解决了这个问题。
我只是在REN行中这样做:
REN "%%a" "!csvname!.pdf"https://stackoverflow.com/questions/45878862
复制相似问题