【问题标题】:Running vb script does not "see" parameters unless I run with cscript prefix除非我使用 cscript 前缀运行,否则运行 vb 脚本不会“看到”参数
【发布时间】:2016-11-16 07:54:33
【问题描述】:

所以我有一个基本脚本,它只打印出传入的参数:

projectName  = ""
if Wscript.Arguments.Count > 0 then
    projectName = Wscript.Arguments(0)
else
    WScript.StdOut.WriteLine "No project specified"
end if
WScript.StdOut.WriteLine "Running script on project: " & projectName

当我从命令行运行脚本时:

cit.vbs test

我收到消息“未指定项目文件”

如果我这样运行它: cscript vit.vbs test

我得到输出:“在项目测试中运行脚本”

为什么会这样?,为什么我不能在不指定 cscript 的情况下传递参数?

注意我已将我的窗口配置为使用 cscript 而不是 wscript 运行 vbs 文件,因为我发现 wscript 有奇怪的问题并且我不想要 GUI 元素 - 但这是一个不同的问题

【问题讨论】:

  • VBScript 中没有打印命令。您的代码错误。
  • @Noodles 抱歉我忘记添加打印功能了..会添加它
  • @Noodles 没有 GUI,因为我不需要执行 MsgBox 之类的操作(这是一个可以使用 wscript 调用的图形元素)。
  • @Noodles 事实上我只是用它的部分功能替换了打印功能,因为另一部分是记录到文件
  • @Noodles 也是,我说的是 GUI 元素,不是 GUI 程序,所以不需要大喊大叫,谢谢 :)

标签: vbscript parameters


【解决方案1】:

当您调用脚本而不命名解释器/主机时会发生什么,取决于 assoc/ftype 文件关联设置。

所以用

assoc .vbs
.vbs=VBSFile

ftype VBSFile
VBSFile=%SystemRoot%\System32\CScript.exe "%1" %*

确保命令行模式包含%* 以转发参数。

更新评论:

assoc/ftype 是命令行工具。一个简单的assoc /? 分别。 ftype /? 将向您展示详细信息(包括处理参数的示例)。但是使用你熟悉的方法。

【讨论】:

  • 啊酷,我不知道你必须这样做。您是否通过命令行运行这些命令? - 如果是这样,这会在全球范围内改变吗? (我通过windows GUI界面进行了vbs关联)
  • 您应该通过正确的工具对其进行更改。输入wscript /?(或cscript /?)查看如何更改。
  • @Noodles - 问题不是更改默认主机,而是处理/传递参数。
  • 他手动更改的,所以不正确。通过正确的方式修复它。
  • @Noodles 我通过Control Panel\Programs\Default Programs\Set Associations 更改了.vbs 的关联。我现在将其改回基于 Windows 的脚本,而不是基于控制台。但事实上我仍然遇到同样的问题。 ftype VBSFile 产生:VBSFile="%SystemRoot%\System32\WScript.exe" "%1" %*。所以我只是通过 cscript 调用我的脚本....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多