Vbscript 批量搜索和替换文件夹名称
我正在使用批处理文件(名为folder.bat)为“我的文件夹”下的每个文件夹名称添加字符串“\u v0\u 1”(我在“我的文件夹”下有大约100个文件夹) 我正在从另一个包含以下行的批处理文件调用我的批处理(folder.bat)(例如): 调用文件夹仲裁逻辑 调用文件夹仲裁器\u逻辑\u旧 问题是,当文件夹名长于变量名(%1)时,批重命名文件夹也会发生,我希望避免这种情况 我希望仅当变量%1与文件夹名称完全匹配时,才会执行重命名操作。这是我的密码:Vbscript 批量搜索和替换文件夹名称,vbscript,batch-file,batch-rename,Vbscript,Batch File,Batch Rename,我正在使用批处理文件(名为folder.bat)为“我的文件夹”下的每个文件夹名称添加字符串“\u v0\u 1”(我在“我的文件夹”下有大约100个文件夹) 我正在从另一个包含以下行的批处理文件调用我的批处理(folder.bat)(例如): 调用文件夹仲裁逻辑 调用文件夹仲裁器\u逻辑\u旧 问题是,当文件夹名长于变量名(%1)时,批重命名文件夹也会发生,我希望避免这种情况 我希望仅当变量%1与文件夹名称完全匹配时,才会执行重命名操作。这是我的密码: setlocal enabledelay
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..
目前不想要的结果是:
仲裁器\u逻辑\u v0\u 1
仲裁器逻辑逻辑v0 1旧v0 1
希望得到的结果是,批处理将更改文件夹名称,如下所示:
仲裁器\u逻辑\u v0\u 1
仲裁器逻辑旧v0 1
我假设需要在文件夹名称中应用搜索和替换方法,但我不确定如何做到这一点
如果批处理文件不行,vb脚本也是一个合适的解决方案
提前谢谢。shay.不需要你的“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"
工作起来很有魅力。顺便说一句,“@”的作用是什么?@terminetorx-@防止命令行被回显到stdout。假设主脚本已发出ECHO OFF,则可能不需要它,因为它位于从另一个脚本调用的脚本中。