Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vbscript 批量搜索和替换文件夹名称_Vbscript_Batch File_Batch Rename - Fatal编程技术网

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

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

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

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

调用文件夹仲裁逻辑

调用文件夹仲裁器\u逻辑\u旧

问题是,当文件夹名长于变量名(%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..
目前不想要的结果是:

仲裁器\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,则可能不需要它,因为它位于从另一个脚本调用的脚本中。