3

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

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

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

C:\测试\1\旧
C:\测试\2\旧
C:\测试\3\旧

成为

C:\测试\1\新
C:\测试\2\新
C:\测试\3\新

感谢您提供任何帮助。

4

2 回答 2

1

这是我很快想到的。我在本地进行了快速测试,它似乎可以满足您的要求:

@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 文件并试一试。希望这会有所帮助。

于 2012-12-27T16:07:33.480 回答
1

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

我修改了他的脚本,通过任意数量的层递归基本目录 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
于 2013-12-11T20:04:41.297 回答