Re: VBScript halts with out error message
- From: T Lavedas <tglbatch@xxxxxxx>
- Date: Mon, 20 Apr 2009 09:12:36 -0700 (PDT)
On Apr 20, 11:48 am, Dan <D...@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
I cahnged the call line to:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "D:\BatchJobs\WebSiteSync\Sync.bat",0,bWaitOnReturn
But despite numerous arrangements of the .run line with varied parameters,
it will not wait for the called job to complete before it goes on to the next
line.
"Pegasus [MVP]" wrote:
"Dan" <D...@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:F4697881-9ED9-4829-9791-1B5D87249F0F@xxxxxxxxxxxxxxxx
I have a script that creates and calls a batch file. It runs through 17
commands and then freezes. If I exit the script and run the batch file it
created, it runs fine. The command lines are based on IIS websites.. If I
remove the websites surrounding the point of failure and run the script,
it
still processes exactly 17 command (which is also 17 websites.) Any
ideas?
Here is the script:
Const ForReading = 1
Const ForWritting = 2
Const ForAppending = 8
Set fso = CreateObject("Scripting.FileSystemObject")
Set strFile = fso.OpenTextFile("D:\BatchJobs\WebSiteSync\sites.txt",
ForReading)
Set strCommand = fso.OpenTextFile("D:\BatchJobs\WebSiteSync\Sync.bat",
ForWritting)
set strLog = fso.openTextFile("D:\BatchJobs\WebSiteSync\msdeploysync.log",
ForWritting)
strLog.WriteLine Date() & " " & Time()
strLog.WriteLine "Calling Creation of Web Site List"
Dim oWsc, oExec
Set oWsc = CreateObject("WScript.Shell")
Set oExec = oWsc.Exec("D:\BatchJobs\WebSiteSync\CreateList.bat")
' wait until finished
Do While oExec.Status <> 1
WScript.Sleep 100
Loop
strLog.WriteLine err.number & " " & err.description
err.number = 0
strLog.WriteLine
strLog.WriteLine "Reading WebSites"
strLog.WriteLine
strCommand.WriteLine "msdeploy -verb:sync -source:appPoolConfig
-dest:appPoolConfig,computerName=IISServer2"
Do Until strFile.AtEndOfStream
s = strFile.ReadLine
x = Instr(s, chr(34))
if x > 0 then
SiteName = right(s, len(s) - x)
end if
y = Instr(SiteName, chr(34))
if y > 0 then
SiteName = left(SiteName,y-1)
end if
if SiteName <> "Default Web Site" then
strCommand.WriteLine "msdeploy -verb:sync -source:apphostconfig=" &
chr(34) & SiteName & chr(34) & ",includeAcls=true -dest:apphostconfig=" &
chr(34) & SiteName & chr(34) & ",computerName=IISServer2 -debug -verbose
D:\BatchJobs\WebSiteSync\msdeploysync.log"
end if
loop
strLog.WriteLine "Calling Sync.bat"
strLog.WriteLine
strFile.Close
strCommand.Close
strLog.close
Set oExec = oWsc.Exec("D:\BatchJobs\WebSiteSync\Sync.bat")
Do While oExec.Status <> 1
WScript.Sleep 30000
Loop
set strLog = fso.openTextFile("D:\BatchJobs\WebSiteSync\msdeploysync.log",
ForAppending)
strLog.WriteLine "Finished at " & Date() & " " & Time()
strLog.close
The Exec method is not suitable when you need to wait until a shell command
has completed its operation. Use the Run method instead - it accepts an
optional parameter bWaitOnReturn.
Dan,
First, you need to define the value of bWaitOnReturn: True means wait
and false (default) means don't wait. Commonly this is done with a
literal, rather than a variable (unless it is programatically
important to be a variable). So, you probably want ...
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "D:\BatchJobs\WebSiteSync\Sync.bat",0,True
However, the Exec.Status checks and looping you had in your original
script should have worked in fundamentally the same way. Therefore, I
must conclude that the underlying operations contained in your batch
procedures are the source of your problem. Since you didn't post
those, it's hard to be sure, but from your description, I can't
imagine anything else. Specifically, if an application invoked in one
or more of the batch files is a Win32 application or is launching an
additional thread and then terminating, the batch procedures would end
and return control to your script, even while the application
continues to run. To get this behavior under control, a START
statement to launch the offending application(s) in the batch may be
all that is needed. However, it might be harder than that.
I think some insight into the batch procedures may be needed to solve
your problem.
Tom Lavedas
***********
http://there.is.no.more/tglbatch/
.
- Follow-Ups:
- Re: VBScript halts with out error message
- From: Dan
- Re: VBScript halts with out error message
- From: ekkehard.horner
- Re: VBScript halts with out error message
- References:
- VBScript halts with out error message
- From: Dan
- Re: VBScript halts with out error message
- From: Pegasus [MVP]
- Re: VBScript halts with out error message
- From: Dan
- VBScript halts with out error message
- Prev by Date: VBScript root folder property question
- Next by Date: RE: VBScript root folder property question
- Previous by thread: Re: VBScript halts with out error message
- Next by thread: Re: VBScript halts with out error message
- Index(es):
Relevant Pages
|