首页 > 解决方案 > 将远程计算机名称变量从批处理文件传递到 hta 并在弹出窗口或 html 窗口中打印出值

问题描述

我正在尝试将批处理文件中的变量传递给需要在某种弹出窗口中显示的 hta - html 或 vbscript。

计算机名称通过打开单个实例的批处理文件循环,因此我需要传递的只是变量“%1”。

我需要的是一种将变量带到 VBscript 或 Javascript,然后通过 html 打印的方法。

标签: javascriptbatch-filevariablesvbscripthta

解决方案


您可以使用CommandLineHTA 应用程序对象的属性(即它的ID)。

它包含完整的逐字命令行,其中包含您的 HTA 文件名(可能还有路径),后跟您在运行 HTA 时提供的参数

这意味着您可以通过 HTA 的命令行传递参数,例如:

start "" "c:\your-path\your-app.hta" "%~1"

"%~1"确保第一个参数始终在双引号中,无论原始 %1 是否具有它们。这仅适用于实际的批处理文件。

如何提取第一个命令行参数:

  • 检查第一个字符是否CommandLine "
    • 如果是这样 - 查找下一个"
    • 否则 - 查找下一个空格 ( " ") 或制表符 ( "\t")
  • 在您找到的位置之后跳过任何连续的空格和/或制表符
  • 再次检查第一个剩余字符是否为"
    • 如果是这样 - 也找到下一个"- 你的论点在双引号之间
    • 否则 - 你的论点在当前位置和第一个之间:" "、 "\t"` 或字符串结尾

所有这些都可以手动完成,也可以借助正则表达式完成

由于您是运行 HTA 的人,因此理论上您可以通过始终将它们包含在命令行中来排除在没有双引号的情况下运行的代码,尽管不建议这样做

有关详细信息,请参阅这篇关于将参数传递给 HTA 的文章,它还包括示例 VBS 代码


推荐阅读