我对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打开文件安全警告的解决方法,因为它在映射的网络驱动器上执行程序。