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