外部命令未从 VBScript 运行

贾里德

我正在尝试执行一个外部程序,在满足特定条件时使用一些变量。据我所知,该命令并未尝试运行。我试过只使用notepad,或者只是opcmon命令本身,它应该会生成一条使用消息。

我得到的唯一输出来自Echo, 并且看起来格式正确。例如

Microsoft (R) Windows Script Host 版本 5.812
版权所有 (C) Microsoft Corporation。版权所有。

opcmon.exe "TEST-Goober"=151 -object "C:\Tools"
' Script Name: FileCount.vbs
' Purpose: This script will send a message to OM with the number
'          of files which exist in a given directory.
' Usage: cscript.exe  FileCount.vbs [oMPolicyName] [pathToFiles]
' [oMPolicyName] is the name of the HPOM Policy
' [pathToFiles] is Local or UNC Path

Option Explicit
On Error Resume Next

Dim lstArgs, policy, path, fso, objDir, objFiles, strCommand, hr

Set WshShell = CreateObject("WScript.Shell")
Set lstArgs = WScript.Arguments

If lstArgs.Count = 2 Then
  policy = Trim(lstArgs(0))
  path   = Trim(lstArgs(1))
Else
  WScript.Echo "Usage: cscript.exe filecount.vbs [oMPolicyName] [pathToFiles]" &vbCrLf &"[oMPolicyName] HPOM Policy name" & vbCrLf &"[pathToFiles] Local or UNC Path"
  WScript.Quit(1)
End If

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If fso.FolderExists(path) Then
  Set objDir = fso.GetFolder(path)

  If (IsEmpty(objDir) = True) Then
    WScript.Echo "OBJECT NOT INITIALIZED"
    WScript.Quit(1)
  End If

  Set objFiles = objDir.Files

  strCommand = "opcmon.exe """ & policy & """=" & objFiles.Count & " -object """ & path & """"
  WScript.Echo strCommand
  Call WshShell.Run(strCommand, 1, True)
  WScript.Quit(0)
Else
  WScript.Echo("FOLDER NOT FOUND")
  WScript.Quit(1)
End If
安斯加·威彻斯

任何类型的 VBScript 调试的第一步:删除On Error Resume Next. 或者说,千万不要使用On Error Resume Next在全球范围内。曾经!

删除该语句后,您将立即看到问题所在,因为您将收到以下错误:

script.vbs(6, 1) Microsoft VBScript 运行时错误:变量未定义:'WshShell'

Option Explicit语句使变量声明成为强制性的。但是,您没有声明WshShell,因此Set WshShell = ...语句失败,但是因为您也有On Error Resume Next错误被抑制并且脚本继续。当执行到达Call WshShell.Run(...)语句时,它也会失败(因为没有可以从中调用Run方法的对象),但再次抑制了错误。这就是为什么您会看到Echo输出,但看不到正在执行的实际命令的原因。

删除On Error Resume Next并添加WshShell到您的Dim语句中,问题就会消失。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在dart中运行外部命令

何时在 Python 中运行外部命令

SML / NJ运行外部命令/脚本

Vim:vsplit并运行外部命令

如何从Python异步运行外部命令?

在awk中运行外部命令

通过exec运行外部命令来保留颜色

Python:运行外部命令时传递参数

从Scala运行自定义的外部命令

如何从lldb提示符运行外部命令

Revit API 如何使外部命令异步运行?

使用vbScript作为单个命令运行2个dos命令

带长参数的运行命令上的vbscript错误

启用vbscript以在命令行和双击中运行

无法从cmd运行vbscript

从vbscript运行vbscript,找不到文件

如何使循环 VBScript 静默运行?

在Python脚本中运行一系列外部命令

如何获取状态为“正在运行”的Pod列表,而无需借助外部命令?

使用nodemon nameoffile.js运行时,'nodemon'不被识别为内部或外部命令

conda 不是内部或外部命令,也不是可运行的程序或批处理文件

安装后运行业力导致“业力”不被识别为内部或外部命令

.mongo'不被识别为内部或外部命令,可运行程序或批处理文件

如何使用AnyEvent和Perl并行运行外部命令

如何在VS Code中的当前选择上运行外部命令?

Node.js与Electron ::运行外部命令并在界面上显示标准输出

在另一个用户下通过os / exec运行外部命令

运行nuxt项目时出错:“'nuxt'无法识别为内部或外部命令”

运行外部命令时如何使用“>”重定向程序运算符?