2016-07-29 54 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碰巧只是運氣好。