我有一个包含数千个子目录的目录,这些子目录包含需要重命名的自己的子目录。我正在使用我没有管理员权限的 Windows 7 机器,因此我无法下载简单的程序来为我执行此操作。
现在我有一个测试目录C:\test
,其中包含一些子目录,这些子目录名为old
我试图更改为new
使用批处理文件的子目录。
为了清楚起见,我想要以下内容:
C:\测试\1\旧 C:\测试\2\旧 C:\测试\3\旧
成为
C:\测试\1\新 C:\测试\2\新 C:\测试\3\新
感谢您提供任何帮助。
我有一个包含数千个子目录的目录,这些子目录包含需要重命名的自己的子目录。我正在使用我没有管理员权限的 Windows 7 机器,因此我无法下载简单的程序来为我执行此操作。
现在我有一个测试目录C:\test
,其中包含一些子目录,这些子目录名为old
我试图更改为new
使用批处理文件的子目录。
为了清楚起见,我想要以下内容:
C:\测试\1\旧 C:\测试\2\旧 C:\测试\3\旧
成为
C:\测试\1\新 C:\测试\2\新 C:\测试\3\新
感谢您提供任何帮助。
这是我很快想到的。我在本地进行了快速测试,它似乎可以满足您的要求:
@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 文件并试一试。希望这会有所帮助。
贾斯汀的回答对我的类似问题非常有帮助,尽管默认情况下它只处理 \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