【发布时间】:2014-08-19 06:28:51
【问题描述】:
我有一个可执行文件 (wget.exe),我希望通过一个简单的 vbs 文件不可见地运行它 - 我对 vbs 几乎没有经验。 wget.exe 接收一个参数,一个在线文件的 url,然后它将下载到当前目录中的文本文件中,协议和所有。
我的问题在于通过隐形脚本传递参数。以下脚本完美运行:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """path\to\wget.exe"" http://www.url.com/helloworld", 0 , false
但是,这将字符串文字用于 url 参数。当我尝试更改 vbs 以接受它自己的参数以传递给可执行文件时,它在运行时失败。修改后的脚本如下:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Users\Alienware\Desktop\game\wget.exe""WScript.Arguments.Item(0)", 0 , false
我已经连续玩了几个小时,但无济于事。这可能是我遗漏的一些非常简单的事情,所以我要求用全新的眼光来告诉我这里出了什么问题。
提前致谢。
【问题讨论】:
-
程序名称和网址之间没有空格。该项目在引号内,因此您将 WScript.Arguments.Item(0) 作为实际 URL 传递(没有 item(0) 顶级域)。
-
空间问题可能是有效的,但它不是唯一的问题,因为添加空间时它仍然不运行。我相信它必须在一组引号内,否则它不会包含在与“运行”方法的程序相关的参数列表中。我看过的所有访问参数的例子都包括 item(0)。
-
这是一个编程命令,不能用引号引起来,也不能当作文本处理。
-
谢谢你,这是有道理的。您会建议我将参数连接到字符串文字,然后使用适当的空格,我接受它吗?
标签: vbscript exe argument-passing