在VBScript脚本中插入两个批处理命令



我对VBScript脚本几乎没有经验,可以使用一些建议。在启动需要网络驱动器的应用程序之前,我们使用此VBScript脚本为机器映射网络驱动器。现在,在脚本的最后一行运行之前,我还需要启动另外两个外部程序。其中一个程序有特殊的启动说明。

[这是第一个启动的目标及其配置]"C:\Program Files\Eterlogic Software\Free Virtual Serial Ports Emulator\VSPEmulator.exe"-最小化-hide_splash C:\/config.vspe

[这是下一个必须启动的程序,但在上面的程序启动之前无法启动]"C:\Program Files\SAACUBridge\SACUBridge.exe"

这两个必须在下面这个VBScript脚本的最后一行(StartNG.bat)之前运行。

==============================================

脚本

option explicit
on error resume next
dim oShell, oNetwork
Set oShell=WScript.CreateObject ("WScript.Shell")
WScript.Sleep 15000 'Allow network services to start
set oNetwork=wscript.createobject ("wscript.network")
oNetwork.RemoveNetworkDrive "n:"
oNetwork.RemoveNetworkDrive "r:"
oNetwork.RemoveNetworkDrive "g:"
oNetwork.RemoveNetworkDrive "v:"
WScript.Sleep 10000
oNetwork.MapNetworkDrive "r:", "\10.81.47.246audio", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "n:", "\10.81.47.246SPOTS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "g:", "\10.81.47.246SONGS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "v:", "\10.81.47.246UPDATE", false, "NexGen", "7roppu$"
WScript.Sleep 5000
Dim oFS, fileBat
Set oFS = CreateObject("Scripting.FileSystemObject")
Set fileBat = Nothing
Set fileBat = oFS.CreateTextFile("c:StartNG.bat", False)
if not fileBat is Nothing Then
   fileBat.WriteLine("v:hlcupdate.exe")
   fileBat.close
end if
oShell.Run "c:StartNG.bat", 0, False

我会放两个命令:

"C:Program FilesEterlogic SoftwareFree Virtual Serial Ports EmulatorVSPEmulator.exe" -minimize -hide_splash c:/config.vspe
"C:Program FilesSAACUBridgeSAACUBridge.exe"

c:StartNG.bat开始时,将VBScript保留为

您可以从VBScript运行外部命令,而无需先将它们写入批处理脚本。替换此:

Dim oFS, fileBat
Set oFS = CreateObject("Scripting.FileSystemObject")
Set fileBat = Nothing
Set fileBat = oFS.CreateTextFile("c:StartNG.bat", False)
if not fileBat is Nothing Then
   fileBat.WriteLine("v:hlcupdate.exe")
   fileBat.close
end if
oShell.Run "c:StartNG.bat", 0, False

这个:

oShell.Run """C:Program FilesEterlogic SoftwareFree Virtual Serial Ports EmulatorVSPEmulator.exe"" -minimize -hide_splash c:/config.vspe", 0, True
oShell.Run """C:Program FilesSAACUBridgeSAACUBridge.exe""", 0, True
oShell.Run "v:hlcupdate.exe", 0, False

由于前两个命令的路径包含空格,因此它们必须放在双引号之间。因为VBScript字符串也是用双引号分隔的,所以必须通过将内部双引号加倍来转义内部双引号,因此表示法为:

"""C:path tosome.exe"" -option"

注意:如果脚本不应等待前两个程序终止(例如,因为它们作为后台进程运行),请将3rd参数从True更改为False。如果需要,您还可以在3个Run调用之间添加一些延迟,方法是在它们之间放置WScript.Sleep 1000(根据需要调整数字)。

oShell.Run """C:Program FilesEterlogic SoftwareFree Virtual Serial Ports EmulatorVSPEmulator.exe"" -minimize -hide_splash c:/config.vspe", 0, False
WScript.Sleep 1000
oShell.Run """C:Program FilesSAACUBridgeSAACUBridge.exe""", 0, False
WScript.Sleep 1000
oShell.Run "v:hlcupdate.exe", 0, False

像这样的东西应该可以做到:

option explicit
on error resume next
dim oShell, oNetwork
Set oShell=WScript.CreateObject ("WScript.Shell")
WScript.Sleep 15000 'Allow network services to start
set oNetwork=wscript.createobject ("wscript.network")
oNetwork.RemoveNetworkDrive "n:"
oNetwork.RemoveNetworkDrive "r:"
oNetwork.RemoveNetworkDrive "g:"
oNetwork.RemoveNetworkDrive "v:"
WScript.Sleep 10000
oNetwork.MapNetworkDrive "r:", "\10.81.47.246audio", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "n:", "\10.81.47.246SPOTS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "g:", "\10.81.47.246SONGS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "v:", "\10.81.47.246UPDATE", false, "NexGen", "7roppu$"
WScript.Sleep 5000
Dim oFS, fileBat
Set oFS = CreateObject("Scripting.FileSystemObject")
Set fileBat = Nothing
Set fileBat = oFS.CreateTextFile("c:StartNG.bat", False)
if not fileBat is Nothing Then
   fileBat.WriteLine("v:hlcupdate.exe")
   fileBat.close
end if
' -- keep checking for the process running
Set Service = GetObject("winmgmts:\.")
    for each Process in Service.InstancesOf ("Win32_Process")
        While Process.Name <> "PROCESS.exe"
        oShell.Run "c:StartNG.bat", 0, False
            'wscript.echo "PROCESS running on " & ComputerName
        Wscript.sleep 2000 ' -- Pause for tw seconds, you may want run continually - but test carefully!!
    Next
Loop

更改以下部分:

 Dim oFS, fileBat  
Set oFS = CreateObject("Scripting.FileSystemObject")  
Set fileBat = Nothing  
Set fileBat = oFS.CreateTextFile("c:StartNG.bat", False)  
if not fileBat is Nothing Then  
   fileBat.WriteLine("v:hlcupdate.exe")  
   fileBat.close  
end if  
oShell.Run "c:StartNG.bat", 0, False  

收件人:

Dim oFS, fileBat  
Set oFS = CreateObject("Scripting.FileSystemObject")  
Set fileBat = Nothing  
Set fileBat = oFS.CreateTextFile("c:StartNG.bat", False)  
if not fileBat is Nothing Then  
   fileBat.WriteLine("v:hlcupdate.exe")  
   fileBat.close  
end if  
oShell.Run """C:Program FilesEterlogic SoftwareFree Virtual Serial Ports EmulatorVSPEmulator.exe"" -minimize -hide_splash c:/config.vspe", 1, False  
WScript.Sleep 1000 'set sleep time in milliseconds for delay  
oShell.Run """C:Program FilesSAACUBridgeSAACUBridge.exe""", 1, False  
WScript.Sleep 1000 'set sleep time in milliseconds for delay  
oShell.Run "c:StartNG.bat", 0, False

批处理文件是一种有助于避免Windows打开文件安全警告的解决方法,因为它在映射的网络驱动器上执行程序。

最新更新