批量搜索和替换文件夹名称

时间:2012-12-04 09:34:53

标签: vbscript batch-file batch-rename

我正在使用批处理文件(名为folder.bat)为“我的文件夹”下的每个文件夹名称添加字符串“_v0_1”(我在“我的文件夹”下有大约100个文件夹)

我从另一个包含此行的批处理文件中调用我的批处理(folder.bat)(例如):

  

调用文件夹arbiter_logic

     

调用文件夹arbiter_logic_old

问题是,当文件夹名称长于变量名称(%1)时,批量重命名文件夹,我想避免它。

我希望只有在变量%1和文件夹名称之间存在完全匹配时才会执行重命名操作。这是我的代码:

setlocal enabledelayedexpansion
pushd G:\my folder
for /f "tokens=* delims= " %%a in ('dir /b/ad') do (
set x=%%a
set y=!x:%1=%1_v0_1!
ren !x! !y!
)
::==
cd..

目前不需要的结果是:

  

arbiter_logic_v0_1

     

arbiter_logic_v0_1_old_v0_1

并且想要的结果是批处理将更改文件夹名称,如下所示:

  

arbiter_logic_v0_1

     

arbiter_logic_old_v0_1

我假设需要在文件夹名称中应用搜索和替换方法,但我不知道该怎么做。

如果批处理文件不能,

vb脚本也将是一个合适的解决方案。

提前致谢。吉文。

1 个答案:

答案 0 :(得分:0)

您不需要“folder.bat”。您只需重命名主脚本中的目录即可。

ren "g:\my folder\arbiter_logic" "arbiter_logic_v0_1"
ren "g:\my folder\arbiter_logic_old" "arbiter_logic_old_v0_1"

您可以使用FOR循环保存一些输入,特别是如果您要进行多次重命名

for %%F in (
  "arbiter_logic"
  "arbiter_logic_old"
) do ren "g:\my folder\%%~F" "%%~F_v0_1"

如果确实想要在主脚本中调用folder.bat,那么“folder.bat”就可以这么简单。

@ren "g:\my folder\%~1" "%~1_v0_1"