2016-11-22 88 views
1

我有這樣的文件命名系統批在文件名後和之前刪除文本的特定字符

CR - 計劃 - Grundriss_RO_STA_MA_C7_TS_0001_01_F - 計劃Nord.pdf

,我想有.bat文件,消除之前和之後的部分,並更改文件名

Grundriss_RO_STA_MA_C7_TS_0001_01_F.pdf

之前和之後的零件不總是有相同的長度!

如果您能幫到,我會非常感謝!非常感謝你。

+2

使用'FOR/F'命令使用連字符和空格作爲分隔符來解析文件名。 – Squashman

回答

2

您可以將此代碼複製到批處理文件中,並將其保存到具有要重命名文件的目錄中。

@echo off 
for /F "delims=" %%I in ('dir /A-D /B *-*-* 2^>nul') do (
    for /F "tokens=3 delims=- " %%J in ("%%~nI") do ren "%%I" "%%J%%~xI" 
) 

我建議插入命令ECHO左命令REN,並從當前目錄是與文件的目錄中的命令提示符窗口中運行該批處理文件重命名爲先確認這些文件會按照您的預期重新命名。如果一切看起來都正確,則使用發佈的代碼運行批處理文件。

FOR循環運行DIR得到其文件名中至少兩個破折號文件的參數/A-D(無目錄)和/B(裸輸出格式),只是因爲文件名的列表。 "delims="將使用空格和水平製表符分隔符來禁用將每個輸出行DIR分割爲字符串的默認設置。

內部對於循環只處理每個文件的名稱,沒有使用雙引號引用%%~nI的文件擴展名。對這個任務感興趣的只是兩個空格和破折號序列後文件名的第三部分。這是"tokens=3 delims=- "的原因。

命令REN改稱通過DIR只是第三部分,並與%%~xI引用的原始文件擴展名返回當前文件。

由於文件名包含空格,因此必須使用雙引號引用文件名。

爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。

  • dir /?
  • echo /?
  • for /?
  • ren /?

2^>nul通過命令DIR錯誤消息輸出重定向到處理STDERR中沒有文件的情況下的圖案匹配*-*-*發現設備NUL壓制它。重定向運算符>必須在這裏用^轉義,以便在執行命令DIR時被解釋爲重定向運算符,而不是作爲錯位重定向運算符的命令FOR。另請參閱Microsoft文章Using command redirection operators

相關問題