我有一个目录,其中包含数千个子目录,其中包含需要重命名的子目录。我使用的是Windows 7电脑,我没有管理员权限,所以我不能下载一个简单的程序来为我做这件事。
现在我有一个测试目录C:test
,有几个子目录,子目录名为old
,我试图使用批处理文件更改为new
。
为了清楚,我想要以下内容:
<>之前C: 1测试老了C: 测试2 老了3 C: 测试 老了之前成为<>之前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文件,然后试一下。
Justin的回答对我的类似问题非常有帮助,尽管默认情况下它只处理 a BC的简单模式,其中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