.bat用括号内的内容重命名文件

时间:2017-08-25 13:45:15

标签: windows batch-file

所以,以前我在这里是因为我想根据我创建的东西重命名我的文件,我最终做了这件事,这很简单,但是现在,我还有另外一件事,我认为它是'更好,所以我有这个代码:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
chcp 65001
SET "sourcedir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER"
SET "destdir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER\BACKUP"
FOR /f "delims=()" %%a IN ('dir /b /a-d "%sourcedir%\*.pdf" ') DO (


    REN "%%a" "%sourcedir%\*.pdf"
    PAUSE

    )

我尝试使用文件名括号内的内容重命名文件,例如:

输入:

File Name: blablabla(exampleIwantToExtract)

输出:

File Name: (exampleIwantToExtract)

当我运行bat时,它说有一个语法错误,我不太清楚为什么,我有一个想法,它可能是REN代码,或者更好,它必须是{{1代码。

1 个答案:

答案 0 :(得分:2)

如果你使用delims,你还应该使用正确的token2作为你的示例文件名。如果你没有定义它,它默认为{{ 1}},它会给你1

但是要重命名文件,还需要全名。最好的方法是使用两个嵌套的blablabla循环。外部循环使用普通for来获取(旧)文件名,使用内部for循环来标记文件名以获取新名称:

for /f

for %%a in ("%sourcedir%\*.pdf") do ( for /f "tokens=2 delims=()" %%b in ("%%~na") do ( ECHO move "%%~fa" "%destdir%\(%%b)%%~xa" ) ) 为您提供完整的合格文件名(包括驱动器和路径)
%%~fa仅为您提供文件名称 %%~na为您提供了文件的扩展名(当然,您只需键入%%~xa即可 但.pdf为您提供了额外的灵活性)

注意:%%~xa不支持目标路径。因此,我改为使用ren