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

Batch file 在VBScript脚本中插入两个批处理命令,batch-file,vbscript,Batch File,Vbscript,我没有脚本方面的经验,可以提供一些建议。在启动需要网络驱动器的应用程序之前,我们使用此VBScript脚本映射计算机的网络驱动器。现在,在脚本的最后一行运行之前,我还需要启动另外两个外部程序。其中一个程序有特殊的启动说明 [这是第一个启动的目标及其配置] “C:\Program Files\Eterlogic Software\Free Virtual Serial Ports Emulator\VSPEmulator.exe”-最小化-隐藏\u splash C:/config.vspe [这

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

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

[这是必须启动的下一个,但在上面的一个启动之前,它无法启动] “C:\Program Files\SAACUBridge\SAACUBridge.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.246\audio", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "n:", "\\10.81.47.246\SPOTS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "g:", "\\10.81.47.246\SONGS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "v:", "\\10.81.47.246\UPDATE", 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:\hlc\update.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
选项显式
出错时继续下一步
暗淡的奥谢尔
设置oShell=WScript.CreateObject(“WScript.Shell”)
WScript.Sleep 15000允许启动网络服务
set oNetwork=wscript.createobject(“wscript.network”)
OneWork.RemoveNetworkDrive“n:”
OneWork.RemoveNetworkDrive“r:”
OneWork.RemoveNetworkDrive“g:”
OneWork.RemoveNetworkDrive“v:”
WScript.Sleep 10000
OneWork.MapNetworkDrive“r:”、“\\10.81.47.246\audio”、false、“NexGen”、“7roppu$”
OneWork.MapNetworkDrive“n:”,“\\10.81.47.246\SPOTS1”,false,“NexGen”,“7roppu$”
OneWork.MapNetworkDrive“g:”,“\\10.81.47.246\SONGS1”,false,“NexGen”,“7roppu$”
OneWork.MapNetworkDrive“v:”,“\\10.81.47.246\UPDATE”,false,“NexGen”,“7roppu$”
WScript.Sleep 5000
模糊的,模糊的
Set of s=CreateObject(“Scripting.FileSystemObject”)
Set fileBat=Nothing
设置fileBat=oFS.CreateTextFile(“c:\StartNG.bat”,False)
如果不是,那么fileBat什么都不是
fileBat.WriteLine(“v:\hlc\update.exe”)
fileBat.close
如果结束
“--不断检查进程是否正在运行
Set Service=GetObject(“winmgmts:\\”)
对于Service.InstancesOf(“Win32_进程”)中的每个进程
While Process.Name“Process.exe”
运行“c:\StartNG.bat”,0,False
“wscript.echo”进程正在运行(&ComputerName)
Wscript.sleep 2000'--暂停两秒钟,您可能希望继续运行-但请仔细测试!!
下一个
环

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

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.246\audio", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "n:", "\\10.81.47.246\SPOTS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "g:", "\\10.81.47.246\SONGS1", false, "NexGen", "7roppu$"
oNetwork.MapNetworkDrive "v:", "\\10.81.47.246\UPDATE", 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:\hlc\update.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
选项显式
出错时继续下一步
暗淡的奥谢尔
设置oShell=WScript.CreateObject(“WScript.Shell”)
WScript.Sleep 15000允许启动网络服务
set oNetwork=wscript.createobject(“wscript.network”)
OneWork.RemoveNetworkDrive“n:”
OneWork.RemoveNetworkDrive“r:”
OneWork.RemoveNetworkDrive“g:”
OneWork.RemoveNetworkDrive“v:”
WScript.Sleep 10000
OneWork.MapNetworkDrive“r:”、“\\10.81.47.246\audio”、false、“NexGen”、“7roppu$”
OneWork.MapNetworkDrive“n:”,“\\10.81.47.246\SPOTS1”,false,“NexGen”,“7roppu$”
OneWork.MapNetworkDrive“g:”,“\\10.81.47.246\SONGS1”,false,“NexGen”,“7roppu$”
OneWork.MapNetworkDrive“v:”,“\\10.81.47.246\UPDATE”,false,“NexGen”,“7roppu$”
WScript.Sleep 5000
模糊的,模糊的
Set of s=CreateObject(“Scripting.FileSystemObject”)
Set fileBat=Nothing
设置fileBat=oFS.CreateTextFile(“c:\StartNG.bat”,False)
如果不是,那么fileBat什么都不是
fileBat.WriteLine(“v:\hlc\update.exe”)
fileBat.close
如果结束
“--不断检查进程是否正在运行
Set Service=GetObject(“winmgmts:\\”)
对于Service.InstancesOf(“Win32_进程”)中的每个进程
While Process.Name“Process.exe”
运行“c:\StartNG.bat”,0,False
“wscript.echo”进程正在运行(&ComputerName)
Wscript.sleep 2000'--暂停两秒钟,您可能希望继续运行-但请仔细测试!!
下一个
环

我将使用您拥有的两个命令:

"C:\Program Files\Eterlogic Software\Free Virtual Serial Ports Emulator\VSPEmulator.exe" -minimize -hide_splash c:/config.vspe
"C:\Program Files\SAACUBridge\SAACUBridge.exe"

c:\StartNG.bat
的开头,让VBScript保持原样

我将使用您拥有的两个命令:

"C:\Program Files\Eterlogic Software\Free Virtual Serial Ports Emulator\VSPEmulator.exe" -minimize -hide_splash c:/config.vspe
"C:\Program Files\SAACUBridge\SAACUBridge.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:\hlc\update.exe")
   fileBat.close
end if
oShell.Run "c:\StartNG.bat", 0, False
为此:

oShell.Run """C:\Program Files\Eterlogic Software\Free Virtual Serial Ports Emulator\VSPEmulator.exe"" -minimize -hide_splash c:/config.vspe", 0, True
oShell.Run """C:\Program Files\SAACUBridge\SAACUBridge.exe""", 0, True
oShell.Run "v:\hlc\update.exe", 0, False
由于前两个命令的路径包含空格,因此必须将它们放在双引号之间。由于VBScript字符串也用双引号分隔,因此必须通过将内部双引号加倍来转义,因此表示法为:

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


可以从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:\hlc\update.exe")
   fileBat.close
end if
oShell.Run "c:\StartNG.bat", 0, False
为此:

oShell.Run """C:\Program Files\Eterlogic Software\Free Virtual Serial Ports Emulator\VSPEmulator.exe"" -minimize -hide_splash c:/config.vspe", 0, True
oShell.Run """C:\Program Files\SAACUBridge\SAACUBridge.exe""", 0, True
oShell.Run "v:\hlc\update.exe", 0, False
由于前两个命令的路径包含空格,因此必须将它们放在双引号之间。由于VBScript字符串也用双引号分隔,因此必须通过将内部双引号加倍来转义,因此表示法为:

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


更改以下部分:

 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:\hlc\update.exe")  
   fileBat.close  
end if  
oShell.Run "c:\StartNG.bat", 0, False  
致:


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

更改以下部分:

 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:\hlc\update.exe")  
   fileBat.close  
end if  
oShell.Run "c:\StartNG.bat", 0, False  
致:


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

我也想到了这一点,但我认为