需要脚本来替换选定文件中的文本

需要脚本来替换选定文件中的文本

环境 Windows 10,
C:\Folder_With_VMXfiles,安装了适用于 Windows 的 sed

工具:批处理脚本,适用于 Windows 的 sed

要求:

在文件夹 C:\Folder_With_VMXfiles 中,需要将 vmx 文件中的某些文本替换为其他文本。但替换文本特定于每个 .vmx 文件。

例子:

  • VMX 文件 1 里面有字符串“COM2”,想用“COM33”替换它
  • VMX 文件 2 里面有字符串“COM3”,想要替换为“COM34”

我尝试使用嵌套的 for 循环,但无法获得所需的结果。基本上,我需要循环遍历目录,选择“.vmx”文件并使用 sed 替换文本。

尝试过:

@echo off

for /f %%i in ("Folder_With_VMXfiles") do ( 
    echo %%i
    for /l %%j in (1,1,9) do (
         sed -i "s/COM/COM%%j/" %%i )

 ) 

答案1

您没有说明 vmx 文件的命名方式?
1.vmx、2.vmx?
既然您知道名称,为什么还需要 for?

@Echo off
Pushd "X:\Folder\with\vmxfiles"
sed -i "s/COM2/COM33/" 1.vmx
sed -i "s/COM3/COM34/" 2.vmx
Popd

动态方法分配一个大于克隆号 2 的 COM 端口

@echo off
Pushd "Folder_With_VMXfiles"

for /l %%j in (2,1,9) do Call :sub %%j
Goto :Eof

:Sub
Echo Prcessing Clone%1.vmx
Set /A NewCom=%1 +2
Echo sed -i "s/COM\d+/COM%NewCom/" Clone%1.vmx

我不知道可分配的最大 com 端口号。要让 sed 真正改变值,请删除最后一行的回显。

相关内容