2011-03-30 277 views
1

我想運行批處理文件來重命名所有文件夾只。批處理DOS - 重命名文件夾

比方說,我有以下文件夾和文件:

A1 (Folder) 
|----> A1.txt A1.doc 

B1 (Folder) 
|----> B1.txt B1.doc 

C1 (Folder) 
|----> C1.txt C1.doc 

當我運行批處理文件,「1」應該從文件夾中刪除,雖然不是從文件名。 所以,你運行它之後。你會得到這樣的:

A (Folder) 
    |----> A1.txt A1.doc 

    B (Folder) 
    |----> B1.txt B1.doc 

    C (Folder) 
    |----> C1.txt C1.doc 

回答

2

使用for /d超過目錄遍歷:

setlocal enabledelayedexpansion enableextensions 
for /d %%f in (*) do (
    set N=%%f 
    set N=!N:1=! 
    ren "%%f" "!N!" 
) 

這消除任何1從文件夾名稱,但。如果數量不同且只有一個字符長度,您可以執行

set N=!N:~0,-1! 

而不是上面的相應位置。

+0

難道你不能用'in(* 1)'來只找到以1結尾的文件夾名? – Neil 2011-03-30 19:50:02

+0

@尼爾:的確,你可以。從問題我有點假設*所有*文件夾以'1'結尾,但。我懷疑被問到的人可以很容易地將其應用於他們的需求,因爲這個問題聽起來很像「我問了一個完全不同的問題,可能仍然類似我的問題,以至於我得到一個我可以使用的答案」(偶爾會失敗:-))。 – Joey 2011-03-30 19:50:49

+0

太棒了,它的作品完美。 – 2011-03-30 19:50:50