Home All Groups Group Topic Archive Search About


Author
16 Nov 2007 4:15 AM
dk
Here is the problem:
A vbs script that sets up a command to run a batch file, calls EXEC on the
command.  When run from a scheduled task, it hangs on the EXEC command,
until the scheduler stops the script after the maximum allowed time to run.
If the EXEC command is commented out, the script does some other work and
completes.
The scheduled task is set to run with user permissions set explicitly for
this type of task.  When the same user logs in directly and executes the
script from the command line, the batch file and vbs script completes
without problem.  User has rights to run and read write in the directory
where the script resides.  The user has rights to run the batch file in the
directory where the batch file resides.  The user has rights to create files
at root of C: where a process the batch file kicks off wants to write.
Again, works successfully when run from the command line: cscript (or
wscript) EXAMPLENAME.VBS

Any ideas what could be wrong?

Example of what the script is doing:
Dim oShell
dim logFile
set outerFSO = CreateObject("Scripting.FileSystemObject")
set logFile = outerFSO.OpenTextFile("c:\tmp\runreport.log", 2, true)
logFile.WriteLine("Log file created")
Set oShell = CreateObject("WScript.Shell")
strPath = Chr(34) & "C:\Program Files\product name\reports\runreport.bat" &
Chr(34) & " " & Chr(34) & CreateYesterdayName  & Chr(34) & " >
c:\tmp\temp.txt"
logFile.WriteLine(strPath)
oShell.exec strPath
logFile.WriteLine("Exiting script")

CreateYesterdayName is a function that creates the desired file name.

Thank you,
D.

Author
16 Nov 2007 8:29 AM
Kai.Bluesky
Dear,

May i know the return of strPath?
you may add Wscript.Echo strPath just before oShell.exec strPath.

Hope it may help.

Best Regards,
Kai

Show quote
On Nov 16, 12:15 pm, "dk" <kaa***@hotmail.com> wrote:
> Here is the problem:
> A vbs script that sets up a command to run a batch file, calls EXEC on the
> command.  When run from a scheduled task, it hangs on the EXEC command,
> until the scheduler stops the script after the maximum allowed time to run.
> If the EXEC command is commented out, the script does some other work and
> completes.
> The scheduled task is set to run with user permissions set explicitly for
> this type of task.  When the same user logs in directly and executes the
> script from the command line, the batch file and vbs script completes
> without problem.  User has rights to run and read write in the directory
> where the script resides.  The user has rights to run the batch file in the
> directory where the batch file resides.  The user has rights to create files
> at root of C: where a process the batch file kicks off wants to write.
> Again, works successfully when run from the command line: cscript (or
> wscript) EXAMPLENAME.VBS
>
> Any ideas what could be wrong?
>
> Example of what the script is doing:
> Dim oShell
> dim logFile
> set outerFSO = CreateObject("Scripting.FileSystemObject")
> set logFile = outerFSO.OpenTextFile("c:\tmp\runreport.log", 2, true)
> logFile.WriteLine("Log file created")
> Set oShell = CreateObject("WScript.Shell")
> strPath = Chr(34) & "C:\Program Files\product name\reports\runreport.bat" &
> Chr(34) & " " & Chr(34) & CreateYesterdayName  & Chr(34) & " >
> c:\tmp\temp.txt"
> logFile.WriteLine(strPath)
> oShell.exec strPath
> logFile.WriteLine("Exiting script")
>
> CreateYesterdayName is a function that creates the desired file name.
>
> Thank you,
> D.
Author
16 Nov 2007 9:06 PM
dk
"Kai.Bluesky" wrote:

> Dear,
>
> May i know the return of strPath?
> you may add Wscript.Echo strPath just before oShell.exec strPath.
>
> Hope it may help.
>
> Best Regards,
> Kai
>
strPath =
"C:\Program Files\product name\reports\runreport.bat" "C:\Program
Files\product name\usagelogs\dwus15112007.txt" > c:\tmp\temp.txt

I don't think the strPath is the problem since this runs fine from the
command line.
Author
16 Nov 2007 2:45 PM
Tom Lavedas
Show quote
On Nov 15, 11:15 pm, "dk" <kaa***@hotmail.com> wrote:
> Here is the problem:
> A vbs script that sets up a command to run a batch file, calls EXEC on the
> command.  When run from a scheduled task, it hangs on the EXEC command,
> until the scheduler stops the script after the maximum allowed time to run.
> If the EXEC command is commented out, the script does some other work and
> completes.
> The scheduled task is set to run with user permissions set explicitly for
> this type of task.  When the same user logs in directly and executes the
> script from the command line, the batch file and vbs script completes
> without problem.  User has rights to run and read write in the directory
> where the script resides.  The user has rights to run the batch file in the
> directory where the batch file resides.  The user has rights to create files
> at root of C: where a process the batch file kicks off wants to write.
> Again, works successfully when run from the command line: cscript (or
> wscript) EXAMPLENAME.VBS
>
> Any ideas what could be wrong?
>
> Example of what the script is doing:
> Dim oShell
> dim logFile
> set outerFSO = CreateObject("Scripting.FileSystemObject")
> set logFile = outerFSO.OpenTextFile("c:\tmp\runreport.log", 2, true)
> logFile.WriteLine("Log file created")
> Set oShell = CreateObject("WScript.Shell")
> strPath = Chr(34) & "C:\Program Files\product name\reports\runreport.bat" &
> Chr(34) & " " & Chr(34) & CreateYesterdayName  & Chr(34) & " >
> c:\tmp\temp.txt"
> logFile.WriteLine(strPath)
> oShell.exec strPath
> logFile.WriteLine("Exiting script")
>
> CreateYesterdayName is a function that creates the desired file name.
>
> Thank you,
> D.

Did you specify that the script is to run Interactive?  The Exec
command needs a command console, which is not possible if the
operation does not run interactive.  In addition, as I understand it,
unless a user is logged in to the workstation such interactive
operations still will fail.

The correct approach, I think, is to replace the Exec with a Run with
it's operation 'hidden', something like this ...

  oShell.Run strPath, 0, true

If you want to catch the return code for your log function, try
this ...

  Dim nRes
  nRes = oShell.Run strPath, 0, true
  logFile.WriteLine "Exiting script with exit code: " & nRes

Tom Lavedas
===========
http://members.cox.net/tglbatch/wsh/
Author
16 Nov 2007 2:49 PM
Tom Lavedas
On Nov 16, 9:45 am, Tom Lavedas <tglba***@cox.net> wrote:
Show quote
> On Nov 15, 11:15 pm, "dk" <kaa***@hotmail.com> wrote:
>
>
>
> > Here is the problem:
> > A vbs script that sets up a command to run a batch file, calls EXEC on the
> > command.  When run from a scheduled task, it hangs on the EXEC command,
> > until the scheduler stops the script after the maximum allowed time to run.
> > If the EXEC command is commented out, the script does some other work and
> > completes.
> > The scheduled task is set to run with user permissions set explicitly for
> > this type of task.  When the same user logs in directly and executes the
> > script from the command line, the batch file and vbs script completes
> > without problem.  User has rights to run and read write in the directory
> > where the script resides.  The user has rights to run the batch file in the
> > directory where the batch file resides.  The user has rights to create files
> > at root of C: where a process the batch file kicks off wants to write.
> > Again, works successfully when run from the command line: cscript (or
> > wscript) EXAMPLENAME.VBS
>
> > Any ideas what could be wrong?
>
> > Example of what the script is doing:
> > Dim oShell
> > dim logFile
> > set outerFSO = CreateObject("Scripting.FileSystemObject")
> > set logFile = outerFSO.OpenTextFile("c:\tmp\runreport.log", 2, true)
> > logFile.WriteLine("Log file created")
> > Set oShell = CreateObject("WScript.Shell")
> > strPath = Chr(34) & "C:\Program Files\product name\reports\runreport.bat" &
> > Chr(34) & " " & Chr(34) & CreateYesterdayName  & Chr(34) & " >
> > c:\tmp\temp.txt"
> > logFile.WriteLine(strPath)
> > oShell.exec strPath
> > logFile.WriteLine("Exiting script")
>
> > CreateYesterdayName is a function that creates the desired file name.
>
> > Thank you,
> > D.
>
> Did you specify that the script is to run Interactive?  The Exec
> command needs a command console, which is not possible if the
> operation does not run interactive.  In addition, as I understand it,
> unless a user is logged in to the workstation such interactive
> operations still will fail.
>
> The correct approach, I think, is to replace the Exec with a Run with
> it's operation 'hidden', something like this ...
>
>   oShell.Run strPath, 0, true
>
> If you want to catch the return code for your log function, try
> this ...
>
>   Dim nRes
>   nRes = oShell.Run strPath, 0, true
>   logFile.WriteLine "Exiting script with exit code: " & nRes
>
> Tom Lavedas
> ===========http://members.cox.net/tglbatch/wsh/

Opps, there's an error in that nest to the last line of code.  It
should read ...

   nRes = oShell.Run(strPath, 0, true)

Tom Lavedas
===========
http://members.cox.net/tglbatch/wsh/
Author
16 Nov 2007 9:15 PM
dk
Thank you Tom. 
I don't have admin rights on the server, so I did not set up the scheduled
operation.  Nor can I look at it.  So I don't know (yet) if the script can
run interactive.

I think I had already tried the Run command, but now I'm getting different
result, at least when running the script from the command line.

With the Run command, I now get the error:
No application is associated with the specified file for this operation.

So I assume that a separate shell that is being launched to run the strPath
doesn't know about the standard file extensions and how to run them.

Show quote
"Tom Lavedas" wrote:

> On Nov 16, 9:45 am, Tom Lavedas <tglba***@cox.net> wrote:
> > On Nov 15, 11:15 pm, "dk" <kaa***@hotmail.com> wrote:
> >
> >
> >
> >
> > > Example of what the script is doing:
> > > Dim oShell
> > > dim logFile
> > > set outerFSO = CreateObject("Scripting.FileSystemObject")
> > > set logFile = outerFSO.OpenTextFile("c:\tmp\runreport.log", 2, true)
> > > logFile.WriteLine("Log file created")
> > > Set oShell = CreateObject("WScript.Shell")
> > > strPath = Chr(34) & "C:\Program Files\product name\reports\runreport.bat" &
> > > Chr(34) & " " & Chr(34) & CreateYesterdayName  & Chr(34) & " >
> > > c:\tmp\temp.txt"
> > > logFile.WriteLine(strPath)
> > > oShell.exec strPath
> > > logFile.WriteLine("Exiting script")
> >
> >
> > Did you specify that the script is to run Interactive?  The Exec
> > command needs a command console, which is not possible if the
> > operation does not run interactive.  In addition, as I understand it,
> > unless a user is logged in to the workstation such interactive
> > operations still will fail.
> >
> > The correct approach, I think, is to replace the Exec with a Run with
> > it's operation 'hidden', something like this ...
> >
> >   oShell.Run strPath, 0, true
> >
> > If you want to catch the return code for your log function, try
> > this ...
> >
> >   Dim nRes
> >   nRes = oShell.Run strPath, 0, true
> >   logFile.WriteLine "Exiting script with exit code: " & nRes
> >
> > Tom Lavedas
> > ===========http://members.cox.net/tglbatch/wsh/
>
> Opps, there's an error in that nest to the last line of code.  It
> should read ...
>
>    nRes = oShell.Run(strPath, 0, true)
>
> Tom Lavedas
> ===========
> http://members.cox.net/tglbatch/wsh/
Author
17 Nov 2007 2:22 AM
Kai.Bluesky
Dear,

You can try psexec to run the bat file.
psexec \\{IP} strPath

ps. It can execute the bat remotely, you can run the script on your
desk.
But this tool need to download.
http://www.microsoft.com/technet/sysinternals/utilities/psexec.mspx

Hope it may help.

Best Regards,
Kai

On Nov 17, 5:15 am, dk <d***@discussions.microsoft.com> wrote:
Show quote
> Thank you Tom.
> I don't have admin rights on the server, so I did not set up the scheduled
> operation.  Nor can I look at it.  So I don't know (yet) if the script can
> run interactive.
>
> I think I had already tried the Run command, but now I'm getting different
> result, at least when running the script from the command line.
>
> With the Run command, I now get the error:
> No application is associated with the specified file for this operation.
>
> So I assume that a separate shell that is being launched to run the strPath
> doesn't know about the standard file extensions and how to run them.
>
> "Tom Lavedas" wrote:
> > On Nov 16, 9:45 am, Tom Lavedas <tglba***@cox.net> wrote:
> > > On Nov 15, 11:15 pm, "dk" <kaa***@hotmail.com> wrote:
>
> > > > Example of what the script is doing:
> > > > Dim oShell
> > > > dim logFile
> > > > set outerFSO = CreateObject("Scripting.FileSystemObject")
> > > > set logFile = outerFSO.OpenTextFile("c:\tmp\runreport.log", 2, true)
> > > > logFile.WriteLine("Log file created")
> > > > Set oShell = CreateObject("WScript.Shell")
> > > > strPath = Chr(34) & "C:\Program Files\product name\reports\runreport.bat" &
> > > > Chr(34) & " " & Chr(34) & CreateYesterdayName  & Chr(34) & " >
> > > > c:\tmp\temp.txt"
> > > > logFile.WriteLine(strPath)
> > > > oShell.exec strPath
> > > > logFile.WriteLine("Exiting script")
>
> > > Did you specify that the script is to run Interactive?  The Exec
> > > command needs a command console, which is not possible if the
> > > operation does not run interactive.  In addition, as I understand it,
> > > unless a user is logged in to the workstation such interactive
> > > operations still will fail.
>
> > > The correct approach, I think, is to replace the Exec with a Run with
> > > it's operation 'hidden', something like this ...
>
> > >   oShell.Run strPath, 0, true
>
> > > If you want to catch the return code for your log function, try
> > > this ...
>
> > >   Dim nRes
> > >   nRes = oShell.Run strPath, 0, true
> > >   logFile.WriteLine "Exiting script with exit code: " & nRes
>
> > > Tom Lavedas
> > > ===========http://members.cox.net/tglbatch/wsh/
>
> > Opps, there's an error in that nest to the last line of code.  It
> > should read ...
>
> >    nRes = oShell.Run(strPath, 0, true)
>
> > Tom Lavedas
> > ===========
> >http://members.cox.net/tglbatch/wsh/
Author
20 Nov 2007 12:08 AM
dk
On Fri, 16 Nov 2007 13:15:01 -0800, dk <d*@discussions.microsoft.com> 
wrote:

Show quote
> Thank you Tom.
> I don't have admin rights on the server, so I did not set up the 
> scheduled
> operation.  Nor can I look at it.  So I don't know (yet) if the script 
> can
> run interactive.
>
> I think I had already tried the Run command, but now I'm getting 
> different
> result, at least when running the script from the command line.
>
> With the Run command, I now get the error:
> No application is associated with the specified file for this operation.
>
> So I assume that a separate shell that is being launched to run the 
> strPath
> doesn't know about the standard file extensions and how to run them.
>
> "Tom Lavedas" wrote:
>
The script works when I log in and run it on the server in question.
My IT guy tries it, from the scheduled task (run now option) and it hangs.
Your suggestion that the script run interactive: That is the default 
setting for both cscript and wscript, so why should I set it?  I will set 
it, but it seems to be a non-issue.  Now, whether interactive is allowed 
for the account if no one is actually logged in on that account, that is 
another story.  I'm looking for that info on the net.

dk

AddThis Social Bookmark Button