2017-08-25 56 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 –