环境 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 真正改变值,请删除最后一行的回显。