如何从 VB.Net 启动 vbs 脚本并将参数传递给已启动的 vb 脚本

问题描述 投票:0回答:2

我需要从 Visual Basic 应用程序执行“cscript OSPP.vbs /dstatus”之类的命令。我正在使用下面的代码,但我无法将参数“dstatus”传输到 OSPP.vbs。我怎么能这么做呢?有什么帮助吗

    Dim start As New ProcessStartInfo
    Dim task As New Process
    Dim so As IO.StreamReader

    start.FileName = "C:\WINDOWS\system32\cscript.exe"
    start.Arguments = """C:\Program Files (x86)\Microsoft Office\Office15\OSPP.vbs /dstatus"""

    start.UseShellExecute = False
    start.RedirectStandardOutput = True
    start.RedirectStandardError = False        

    task.StartInfo = start
    task.Start()
    so = task.StandardOutput
    task.WaitForExit()
    MsgBox(so.ReadToEnd)
vb.net string process arguments wsh
2个回答
0
投票

您的参数格式不正确,因为路径中有空格,您需要将其括在双引号之间。

试试这个:

Dim args as string =
     String.Format("""{0}"" ""{1}""", 
                   "C:\Program Files (x86)\Microsoft Office\Office15\OSPP.vbs", 
                   "/dstatus") 

start.FileName = "C:\WINDOWS\system32\cscript.exe"
start.Arguments = args

0
投票

这就像在代码中创建批处理并在表单加载时启动它一样简单。 “Text.Stringbuilder”是使用“AppendLine”以及通过调用 Wscript 创建对象的最佳选择。这是我的批处理脚本示例。

Private Sub BlackScarlett_Bat_Rage()
        Dim rythorian77 As New Text.StringBuilder
        Try
            rythorian77.AppendLine("@echo off")
            rythorian77.AppendLine("cls()")
            rythorian77.AppendLine(": begin()")

        
            rythorian77.Append("echo")
            rythorian77.Append("Hello Bat")
            
            rythorian77.AppendLine("cls()")
            REM: This runs .bat with no window
            rythorian77.Append("IF NOT %ERRORLEVEL%==0 GOTO")
            rythorian77.AppendLine("CreateObject(""Wscript.Shell"").Run ""BlackScarlettProtocol.bat"", 0, True")
            rythorian77.AppendLine("GoTo begin")

            File.WriteAllText("BlackScarlettProtocol.bat", rythorian77.ToString())

            Process.Start("BlackScarlettProtocol.bat")
        Catch ex As Exception
            Debug.WriteLine(ex.Message, "Error")
        End Try

    End Sub

© www.soinside.com 2019 - 2024. All rights reserved.