2016-07-29 116 views
2

我有这样的 “launchprogram.bat” 来称呼 “myprogram.exe”(真名ppbS.exe)包括英美烟草公司代码为VBS

原始代码launchprogram.bat

call "ppbS.exe" 
set ppbPath=ppbS 
set pathHold=%path% 
set path=%ppbPath%;%path% 
ppbS create "ppbS" ShowPct 1 No Crawl 1 SetCrawlTime 1 300000 
ppbS settext 1 "Start myprogram... Be pacient" 
second.bat 
ppbS shutdown 
set path=%pathHold% 
set pathHold= 
set ppbPath= 

注意 : “second.bat” 是另一种蝙蝠运行隐藏

额外:这个版本的 “launchprogram.bat” 由Noodles

提供
"Cmd /c ""ppbS.exe"" & Dir & set ppbPath=ppbS & set pathHold=%path% & set path=%ppbPath%;%path% & ppbS create ""ppbS"" ShowPct 1 No Crawl 1 SetCrawlTime 1 300000 & ppbS settext 1 ""Start myprogram... Be pacient"" & second.bat & ppbS shutdown" 

无论如何;我用这个“start.vbs”来称呼“launchprogram.bat”

On Error Resume Next 
mensaje = MsgBox("Start myprogram", vbOKCancel, "myprogram") 
If mensaje = vbOK Then 
    Script = "launchprogram.bat" 
    Set objshell = CreateObject("Wscript.Shell") 
    strPath = Wscript.ScriptFullName 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.GetFile(strPath) 
    strFolder = objFSO.GetParentFolderName(objFile) 
    NewPath = objFSO.BuildPath(strFolder, Script) 
    Set objshell = CreateObject("wscript.shell") 
    objshell.Run NewPath, vbHide 
Else 
    Set objshell = CreateObject("Wscript.shell") 
    rmensaje = objshell.popup("Cancel myprogram", 3, "myprogram", 16) 
End If 

正如你所看到的,他们有太多的脚本和太多的代码来调用一个简单的程序。

请求

我要删除“launchprogram.bat”,并把它的代码为“start.vbs”,对于只用一个脚本来调用“myprogram.exe”

谢谢lot

+0

你可以在一行上放置多个命令。所以执行'cmd/c start'“c:\ windows \ notepad&Dir&Set Fred = Cat&Set F&Pause'。因为你不打字,所以如果你不想等待程序退出,你必须使用'start'来启动程序。 'Call'用于启动**批处理文件**。通常启动一个程序,你只能指定exe文件。请参阅我的答案在这里启动程序的三种方法http://stackoverflow.com/questions/31820569/trouble-with-renaming-folders-and-sub-folders-using-batch – 2016-07-29 22:24:07

+0

有没有意义'On Error GoTo 0'作为最后一行。错误上下文在该行之后立即被销毁,所以它只会使代码变慢。批处理文件中的最后三行也不会执行任何操作。他们运行,然后他们改变的环境被破坏,所以它只会让代码变慢。 – 2016-07-29 22:29:42

+0

嗨面条。谢谢。您的意思是通过以下方式替换test.bat的内容:call“myprogram.exe”&Dir&set ppbPath = myprogram&set pathHold =%path%&set path =%ppbPath%;%path%&ppbS create“myprogram”ShowPct 1 No Crawl 1 SetCrawlTime 1 300000&ppbS settext 1“启动myprogram ...是pacient”&ppbS关闭(???)。在这种情况下如何投入vbs? – BrianC

回答

1
objshell.run "Cmd /c ""myprogram.exe"" & Dir & set ppbPath=myprogram & set pathHold=%path% & set path=%ppbPath%;%path% & ppbS create ""myprogram"" ShowPct 1 No Crawl 1 SetCrawlTime 1 300000 & ppbS settext 1 ""Start myprogram... Be pacient"" & ppbS shutdown", vbhide 

VBHide未定义。如果它是0.如未定义,则将其视为0.这是因为常量在VBScript中不可用。 VBHide碰巧只是运气好。