.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
我需要一些帮助解决这个问题。
答
由于@LotPings,我解决了这个问题。
我只是在REN线这样做:!
REN "%%a" "!csvname!.pdf"
ren命令应与'REN重新命名当前文件 “%%一个” “csvname .PDF”'命令'IF/I“ %csvname:〜-13%“==”“SET”csvname =%csvname:〜0,-13%“'是无稽之谈:如果最后13个字符为空(意味着csvname为空),则缩短csvname以最后删除13个字符。 [编辑]您的问题以包含一些示例名称。 – LotPings
它已被编辑,您现在可以看到文件的名称 –
您期望什么,期望的结果是什么? – LotPings