2016-07-29 13 views
2

Ich habe dieses "launchprogram.bat" nennen "myprogram.exe" (richtiger Name ppbS.exe)umfassen .bat-Code in vbs

Originalcode 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= 

Hinweis : "second.bat" ist ein weiterer Schläger laufen hide

zusätzliche: Diese Version von "launchprogram.bat" von Noodles

zur Verfügung gestellt
"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" 

Wie auch immer; i verwendet, um dieses „start.vbs“ zu nennen „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 

Wie Sie sehen können, sind sie zu viele Skripte und zu viele Codes ein einfaches Programm zu nennen.

Anfrage:

ich will „launchprogram.bat“ löschen und seinen Code setzen in „start.vbs“ zur Verwendung nur ein Skript „myprogram.exe“

ein

Dank zu nennen Lot

+0

Sie können mehrere Befehle auf eine Zeile setzen. Also "cmd/c starten" "c: \ windows \ notepad & Dir & Set Fred = Cat & Set F & Pause" ausführen. Da Sie nicht tippen, müssen Sie 'start' verwenden, um Programme zu starten, wenn Sie nicht auf das Beenden des Programms warten möchten. 'Call' wird zum Starten von ** Batch-Dateien ** verwendet. Normalerweise, um ein Programm zu starten, geben Sie nur die exe an. Siehe meine Antwort hier auf den drei Möglichkeiten, Programme zu starten http://stackoverflow.com/questions/31820569/trouble-with-renaming-folders-and-sub-folders-using-batch –

+0

Es gibt keinen Sinn in 'On Error GoTo 0 als letzte Zeile. Der Fehlerkontext wird unmittelbar nach dieser Zeile gelöscht, sodass Code nur langsamer wird. Ihre letzten drei Zeilen in der Batch-Datei machen auch nichts. Sie werden ausgeführt und die Umgebung, in der sie sich ändern, wird zerstört, sodass Code langsamer wird. –

+0

Hallo Nudeln. Vielen Dank. Du meinst den Inhalt von test.bat ersetzen durch: rufe "myprogram.exe" & Dir & setze ppbPath = myprogram & setze pathHold =% path% & setze path =% ppbPath%;% path% & ppbS erstelle "myprogram" ShowPct 1 Nein Crawl 1 SetCrawTime 1 300000 & ppbS settext 1 "Starten Sie mein Programm ... Sei pacient" & ppbS shutdown (???). In diesem Fall, wie man in Vbs einlegt? – BrianC

Antwort

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 ist nicht definiert. Wenn dies der Fall wäre, wäre es 0. Als undefiniert wird es als 0 behandelt. Dies liegt daran, dass Konstanten in VBScript nicht verfügbar sind. Es ist nur ein Glück, dass VBHide 0 ist.