Jag har en batfil som jag vill exekvera. Dock så skulle jag vilja att det visas en messagebox innan exekveringen påbörjas och en ny messagebox när exekveringen är klar. Då vet användaren att körningen är klar. Som jag fattat det kan man inte i bat-filer visas messagebox på ett enkelt sätt.
Jag tänkte då använda en vbs-fil för att visa messagebox. vbs får också starta bat-filen. Men hur får man vbs att starta bat-filen?
Det fungerar nästan perfekt. Körningen verkar vara asynkron, d v s min sista msgbox dyker upp direkt, innan bat-filen körts klart.
Så här filen ut principiellt (pseudokod)
msgbox "Nu kör vi!"
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\minbatfilattköra.bat"
msgbox "Nu är vi körda!".
Skulle alltså vilja att den sista msgboxen dök upp när körningen var klar. Är det möjligt?
msgbox "Nu kör vi!"
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run("C:\minbatfilattköra.bat",1,True)
msgbox "Nu är vi körda!".
Där det nu står 1 kan du byta mot dessa:
0 Hides the window and activates another window.
1 Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
2 Activates the window and displays it as a minimized window.
3 Activates the window and displays it as a maximized window.
4 Displays a window in its most recent size and position. The active window remains active.
5 Activates the window and displays it in its current size and position.
6 Minimizes the specified window and activates the next top-level window in the Z order.
7 Displays the window as a minimized window. The active window remains active.
8 Displays the window in its current state. The active window remains active.
9 Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.
10 Sets the show state based on the state of the program that started the application.
Eftersom det första inte funkade testade jag ditt andra förslag att inkludera både cmd.exe och sökvägen. Då öppnas bara command-fönstret, men filen körs inte. Jag testade en massa varianter utan framgång. Jag har kommenterat bort några av dessa.
iRep=MSgBox("Körningen kan ta upp till en timme. Vill du fortsätta?", vbYesNo+ vbQuestion,"XML-Körning")
If iRep=vbYes Then
Set WshShell = WScript.CreateObject("WScript.Shell")
'WshShell.Run "cmd.exe C:\apa.bat",1 ,True
'WshShell.Run "cmd.exe ""C:\apa.bat""",1 ,True
WshShell.Run "cmd.exe ""c:\apa.bat""" ,1 ,True
MsgboX "Körningen är genomförd!",vbOK + vbInformation,"XML-körning"
End If
iRep=MSgBox("Körningen kan ta upp till en timme. Vill du fortsätta?", vbYesNo+ vbQuestion,"XML-Körning")
If iRep=vbYes Then
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c c:\apa.bat" ,1 ,True
MsgboX "Körningen är genomförd!",vbOK + vbInformation,"XML-körning"
End If