webForumDet fria alternativet

Köra bat-fil från vbs-fil

Programmering

7 svar · 947 visningar · startad av clarkbones

Medlem sedan feb. 20013 023 inlägg
Frågan#1

Hej!

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?

Medlem sedan dec. 20014 239 inlägg
#2
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\minbatfilattköra.bat"
Medlem sedan feb. 20013 023 inlägg
#3

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?

Medlem sedan juni 20014 421 inlägg
#4
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.
Medlem sedan juni 20014 421 inlägg
#5

Det är ordet true sist i Run-kommandot som gör att vbscriptet väntar på att exekveringen är klar.

Om det inte hjälper, kan du behöva anrop batfilen som ett kommando till cmd.exe.

typ

wshshell.run("cmd.exe c:\blaha.vbs")

Medlem sedan feb. 20013 023 inlägg
#6

Tack, men det funkar inte riktigt.

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
Medlem sedan juni 20014 421 inlägg
#7

foo.vbs:

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

apa.bat:

echo running
pause
Medlem sedan feb. 20013 023 inlägg
#8

STORT TACK!

269 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)