2017-08-25 53 views
0

因此,之前我在这里是因为我想根据我创建的内容重命名我的文件,所以我最终这样做了,而且这是一件简单的事情,但现在,我我用,我认为这是更好的另一件事,所以我有这样的代码:.bat将文件重命名为圆括号内的内容

@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) 

当我运行它说,有一个语法错误,我不是很清楚为什么,我有一个IDEIA寿蝙蝠,它可能是REN代码,或者更好的,它必须是代码为REN

回答

2

如果你使用delims,你也应该使用正确的token2您例如文件名(S)。如果你不定义它,它默认为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不支持目标路径。所以我用move代替。

+0

它像一个宝石的家伙一样工作,不知道分隔符的力量,我有点失去%%部分,这有点奇怪,反正,谢谢! –

+0

阅读'for /?'。然后再读一遍。然后睡在它上面再读一遍。这就是我学到的东西':)' – Stephan

+0

好的男人,没有Echo它给我一个错误,你知道为什么吗? @Stephan –