2011-03-30 217 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