批量重命名Windows中的子目录

时间:2012-12-27 15:39:25

标签: windows batch-file rename command-prompt subdirectory

我有一个包含数千个子目录的目录,这些子目录包含需要重命名的子目录。我正在使用我没有管理员权限的Windows 7计算机,因此我无法下载一个简单的程序来为我执行此操作。

现在我有一个测试目录C:\test,其中包含一些子目录,这些子目录的子目录名为old,我尝试使用批处理文件将其更改为new

为了清楚起见,我想要以下内容:

C:\test\1\old
C:\test\2\old
C:\test\3\old

成为

C:\test\1\new
C:\test\2\new
C:\test\3\new

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

贾斯汀的答案对我的类似问题非常有帮助,但默认情况下它只处理了\ A \ B \ C的简单模式,其中A是基本目录,B是一些未确定的目录,C是您寻找的目录。 / p>

我修改了他的脚本,通过任意数量的层递归基本目录A,直到找到C。

这是编写为期望命令行参数的脚本:

@echo off

set BASEDIR=%1
SET CRITERIA=\%2
SET REPLACENAME=%3

call :FindDirs %BASEDIR%

GOTO END

:FindDirs
FOR /D %%F IN ("%1\*") DO CALL :RENAME %%F
GOTO:EOF

:RENAME
REM echo DIR=%1
FOR /D %%R IN ("%1%CRITERIA%") DO (
    if EXIST %%R RENAME %%R "%REPLACENAME%"
)
call :FindDirs %1
GOTO:EOF

答案 1 :(得分:0)

这是我很快想出来的。我在当地进行了一次快速测试,似乎做了你要求的事情:

@echo off

FOR /D %%D IN ("C:\test\*") DO CALL :RENAME %%D

:RENAME
SET CRITERIA=\old
FOR /D %%R IN (%1%CRITERIA%) DO RENAME %%R "new"

将其保存到bat文件中并试一试。希望这会有所帮助。