在 VBS 中使用环境变量的值时出现问题

2024-04-16

我是 VBScript 新手,编写了一个可以修改 XML 文件的小脚本;但我在将计算机名称放入 XML 时遇到问题。

我从以下位置获取了计算机名称HOST使用这些行的环境变量:

 Set wshShell = CreateObject( "WScript.Shell" )
 WScript.Echo wshShell.ExpandEnvironmentStrings( "HOST=%HOST%" )

但是,现在我不清楚如何将其放入 XML 内的几个路径中 - 这意味着我希望计算机名称出现在您看到的任何地方%HOST% below:

sWebcastFlash = "%HOST%:port/webcast/"
sWebcastInfra = "%HOST%/webcast/"
sWebcastTelephone = "%HOST%:port/telephone/"

%HOST%上面的字符串没有扩展成HOST环境变量的值如我所愿。我缺少什么?

这是我的完整脚本:

Set wshShell = CreateObject( "WScript.Shell" )
WScript.Echo wshShell.ExpandEnvironmentStrings( "HOST=%HOST%" )
'wshShell = Nothing


sWebcastFlash = "%HOST%:port/webcast/"
sWebcastInfra = "%HOST%/webcast/"
sWebcastTelephone = "%HOST%:port/telephone/"

'Create XMLDoc object
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.load "D:\Configuration\developer\developer-definitions.xml"

Set nWebcastFlash = xmlDoc.selectSingleNode("//clusters/cluster/servers/server/webcast-fms-url-for-flash")
Set nWebcastInfra = xmlDoc.selectSingleNode("//clusters/cluster/servers/server/webcast-fms-url-for-infra")
Set nWebcastTelephone = xmlDoc.selectSingleNode("//clusters/cluster/servers/server/webcast-fms-telephone-preview-url")
Set nWebcamUrl = xmlDoc.selectsinglenode ("//clusters/cluster/servers/server/webcam-self-test-url")
Set nHostName = xmlDoc.selectsinglenode ("//clusters/cluster/servers/server/host-name")
Set nHostAddress = xmlDoc.selectsinglenode ("//clusters/cluster/servers/server/host-address")
Set nAudUrl = xmlDoc.selectsinglenode ("//media-definitions/media-servers/on-demand-media-url/url-list/url/aud-url")
Set nFlashUrl = xmlDoc.selectsinglenode ("//flash-server-chat-list-url/flash-server-url")
Set nWebcamTest = xmlDoc.selectsinglenode ("//flash-server-webcam-self-url/webcam-self-test")

'Set the text node with the new value
nWebcastFlash.text = sWebcastFlash
nWebcastInfra.text = sWebcastInfra
nWebcastTelephone.text = sWebcastTelephone
'Save the xml document with the new settings.
strResult = xmldoc.save("D:\out.xml")

您只需分配扩展的HOST环境变量到局部变量并将其添加到要在其中使用它的字符串之前:

Set wshShell = CreateObject( "WScript.Shell" )
host = wshShell.ExpandEnvironmentStrings( "%HOST%" )
wshShell = Nothing


sWebcastFlash = host & ":port/webcast/"
sWebcastInfra = host & "/webcast/"
sWebcastTelephone = host & ":port/telephone/"

Edit:

@Tomalak 在他的评论中提出了一个很好的观点。为了完整起见,您还可以通过调用来完成此操作ExpandEnvironmentStrings对于要在其中使用的每个字符串HOST环境变量的值:

Set wshShell = CreateObject( "WScript.Shell" )

sWebcastFlash = wshShell.ExpandEnvironmentStrings( "%HOST%:port/webcast/" )
sWebcastInfra = wshShell.ExpandEnvironmentStrings( "%HOST%/webcast/" )
sWebcastTelephone = wshShell.ExpandEnvironmentStrings( "%HOST%:port/telephone/" )

wshShell = Nothing

正如 @Tomalak 进一步指出的那样,这涉及更多的代码:在我看来,这是不必要的重复,但是 TMTOWTDI。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 VBS 中使用环境变量的值时出现问题 的相关文章

随机推荐

  • 在 RTC 中交付后如何丢弃更改集

    我意外地交付了更改集 其中包括一些在 RTC 中具有本地系统特定配置的附加配置文件 有没有办法在交付后放弃这些更改 我的意思是 这些变化不应该随着其他团队成员的变化而发生 如果有的话请提供任何指示 有没有办法在交付后放弃这些更改 不完全是
  • 添加Where 子句时会出现什么问题?

    我有一个简单的查询 Select Distinct BOLTYPENAME BOLTYPE BOLTYPE From BOLTYPE Inner Join WORKORDER on WORKORDER BOLTYPE BOLTYPE BOL
  • 根据javascript中深度嵌套对象中的值过滤数组

    我有具有以下结构的数组 var topics id 1 name topic title 1 sub categories id 1 name category title 1 indicators id 1 name indicator
  • Swift 的 Decimal 精度问题

    根据文档here https developer apple com documentation foundation decimal Swift 3 4 Decimal 类型是以 10 为基数桥接到 NSDecimalNumber 的表示
  • 如何将 Get-WMIObject 查询中的数据解析为字符串?

    我有以下代码行 get wmiobject class win32 computersystem select object username 它返回 用占位符编辑 username DOMAIN jsmith 需要做什么来删除填充并给我一
  • ActiveRecord“销毁”方法在 Ruby on Rails 中返回布尔值?

    我正在使用 Ruby on Rails 3 我想知道什么类型的返回将具有以下代码 user destroy 我需要它来处理案件success and fault以这样的方式 if user destroy puts True else pu
  • 在 Azure Web 应用程序上找不到证书

    我将 Web 应用程序部署为 Azure 应用服务上的 Web 应用程序 我将一些证书上传到 Azure 门户 因为 Web 应用程序通过 SSL 运行 并且我们使用另一个证书来执行一些解密 对于后一种情况 我有一种方法 在本地工作正常 来
  • 我应该将“orderby group.key”放在这个 LINQ 语句中的什么位置?

    这段代码 string words car boy apple bill crow brown var groups from w in words group w by w 0 into g select new FirstLetter
  • 如何区分刷新触发的Unload事件还是窗口关闭触发的Unload事件?

    刷新操作和窗口关闭操作都可以触发卸载事件 有没有办法区分实际触发它的操作 在我的情况下 我想忽略刷新操作 您能给我一些解决办法吗 我注意到已经有这种question https stackoverflow com questions 568
  • 在 WinForm 上禁用最小化和最大化?

    WinForms 在右上角有三个框 分别用于最小化 最大化和关闭窗体 我想要做的是删除最小化和最大化 同时保持关闭 我还想使关闭最小化表单而不是关闭它 如何才能做到这一点 The Form有两个属性称为MinimizeBox and Max
  • 如何检查何时为特定 dag 安排了下一次 Airflow DAG 运行?

    我已设置气流并运行一些 DAG 安排每天一次 0 0 我想检查下次计划运行特定 dag 的时间 但我看不到可以在管理员中执行此操作的位置 如果你愿意 你可以使用Airflow s CLI 有next execution option htt
  • 如何在 gcc 内联汇编中声明和初始化局部变量而不使用扩展内联 asm?

    我知道这是一个非常基本的问题 但我真的很困惑 事实上我绝对是 GCC 语法的新手 我想要拥有局部变量 带有标签的堆栈地址 而不使用扩展内联汇编 类似 Intel 语法中的以下代码 DATA1 DB 100 MOV AL DATA1 我猜这是
  • MySQL / 经典 ASP - 参数化查询

    在绝对紧急的情况下 我正在尝试浏览我的网站并添加参数化查询 我是新手 刚刚了解它们 我的问题是 我对连接类型知之甚少 并且我看到的所有示例都使用另一种连接方法 这让我感到困惑 我并不是特别想改变连接到数据库的方式 因为它位于很多页面上 我只
  • 如何使用 C# 从 Excel 工作表中删除 VB 代码?

    有谁知道怎么删除all使用 C 的 VB 代码形成 Excel 工作簿 这段代码不起作用 它删除第一个 最后一个 VBComponent 但在第二个VBComponent上引发ArgumentException VBProject proj
  • 形成 Mockito“语法”

    Mockito 看起来像是一个非常可爱的 Java 存根 模拟框架 唯一的问题是我找不到任何关于使用他们的 API 的最佳方法的具体文档 测试中常用的方法包括 doXXX Stubber when T OngoingStubbing the
  • 如何绘制 UIBezierPath

    这就是我想做的 我有一个 UIBezierPath 我想将它传递给某种方法来绘制它 或者简单地从创建它的方法中提取它 我不确定如何指示应在哪个视图中绘制它 所有绘图方法都必须以 void drawRect CGRect rect 我可不可以
  • Visual Studio 2017 无法修改 - 需要重新启动

    我已经尝试更新和修改 Visual Studio 2017 两天了 但每次运行 Visual Studio 安装程序时 我都会收到以下消息 需要重新启动 如果需要 任何剩余的设置都将恢复 重启后 显然我重新启动了大约10次 知道我必须删除什
  • 外部 jQuery 根本不执行

    下面的代码放在里面时完全可以工作运行页面上的标签 我后来把代码移到了外面 js用于组织目的的文件导致代码停止工作 当应触发某些事件时没有任何反应 我确保脚本包含在给定页面上 此外 我通过 查看源 确保链接有效 当我单击脚本的路径时 脚本会在
  • Pycharm 在移动现有虚拟环境或删除并创建新虚拟环境后忽略新虚拟环境

    如果我在创建项目时允许PyCharm创建虚拟环境 则删除或移动venv文件夹 它不会让我选择一个新文件夹 我可以进入设置中的 Python 解释器菜单 然后选择我自己创建的现有解释器 注意 brokenInterpreter oldFold
  • 在 VBS 中使用环境变量的值时出现问题

    我是 VBScript 新手 编写了一个可以修改 XML 文件的小脚本 但我在将计算机名称放入 XML 时遇到问题 我从以下位置获取了计算机名称HOST使用这些行的环境变量 Set wshShell CreateObject WScript