0

我正在使用批处理文件(命名为 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 脚本也将是一个合适的解决方案。

提前致谢。谢伊。

4

1 回答 1

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"
于 2012-12-04T15:22:22.217 回答