【问题标题】:Run Command line via VBS with parameters通过带有参数的 VBS 运行命令行
【发布时间】:2017-03-30 21:52:40
【问题描述】:

在这方面遇到了困难。我可以从命令提示符成功运行以下命令,但无法使用 VB 脚本。

来自 CMD:

  1. 将目录更改为 C:\Program Files (x86)\VMware\VMware Workstation\
  2. 然后运行:vmrun.exe -T ws start "C:\Users\Office\Documents\Virtual Machines\Windows 7\Windows 7.vmx" nogui

我在 VBS 中的尝试:

Dim objShell, strPath1, strAttr, strPath2 
Set objShell = CreateObject ("WScript.Shell")

strPath1 = "C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"
strAttr1 = " -T ws start "
strAttr2 = "C:\Users\Office\Documents\Virtual Machines\Windows 7\Windows 7.vmx"
strAttr3 = " nogui"

'WScript.Echo strPath1 & strAttr1 & """" & strAttr2 & """" & strAttr3 

objShell.Run strPath1 & strAttr1 & """" & strAttr2 & """" & strAttr3 

我得到的错误是:系统找不到指定的文件。

【问题讨论】:

  • 我认为你需要 double 用空格对每个路径进行双引号
  • 谢谢!就是这样。在查看回显输出时它只是看起来不正常,但它可以工作:)
  • 完整代码最终为:Dim objShell, strPath1, strAttr1, strAttr2, strAttr3 Set objShell = CreateObject ("WScript.Shell") strPath1 = """C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe""" strAttr1 = " -T ws start " strAttr2 = """C:\Users\Office\Documents\Virtual Machines\Windows 7\Windows 7.vmx""" strAttr3 = " nogui" 'WScript.Echo strPath1 & strAttr1 & strAttr2 & strAttr3 'objShell.Run strPath1 & strAttr1 & """" & strAttr2 & """" & strAttr3 objShell.Run strPath1 & strAttr1 & strAttr2 & strAttr3

标签: command-line vbscript


【解决方案1】:

工作代码最终是:

Dim objShell, strPath1, strAttr1, strAttr2, strAttr3
Set objShell = CreateObject ("WScript.Shell")

strPath1 = """C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"""
strAttr1 = " -T ws start "
strAttr2 = """C:\Users\Office\Documents\Virtual Machines\Windows 7\Windows 7.vmx"""
strAttr3 = " nogui"

objShell.Run strPath1 & strAttr1 & strAttr2 & strAttr3

【讨论】:

    【解决方案2】:

    我将替换 objShell.Run strPath1 & strAttr1 & """" & strAttr2 & """" & strAttr3

    与

    objShell.Run strPath1 & strAttr1 & chr(34) & strAttr2 & chr(34) & strAttr3

    或者在 strAttr2 变量之前和之后包含 chr(34)

    strAttr2 = chr(34) & "C:\Users\Office\Documents\Virtual Machines\Windows 7\Windows 7.vmx" & chr(34)

    顺便说一句 chr(34) = "

    【讨论】:

    • 或者创建一个已经有引号的变量来连接cleaner var = chr(34) & strAttr2 & chr(34)
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多