我有一个包含数千个子目录的目录,这些子目录包含需要重命名的子目录。我正在使用我没有管理员权限的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
感谢您提供任何帮助。
答案 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文件中并试一试。希望这会有所帮助。