By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,686 Members | 1,510 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,686 IT Pros & Developers. It's quick & easy.

Exec method won't work

P: n/a
I have a script used to find and run Java on a Windows system.**It*worked
fine on original tests (on a Windows XP system).**It's*now*running*on*a
Windows 2000 (sp3) system, and it won't work -- the problem is this line:

set oCommand = WshShl.Exec(sCommand)

(it's about halfway down)**Is*there*a*problem*with*the*Exec*method*in* some
versions of VBS?**Is*the*problem*Windows*version*I'm*on,*or*is *it*something
more obvious that I'm just not seeing?

The error is that the object doesn't support the Exec method.**(I've*also
substituted the string sCommand with "C:\WINNT\System32\sol.exe" just to
make a quick check, and it makes no difference (not that it should with
that error message, I just wanted to try a .exe I knew was there and
working).

Thanks for any help!

Hal

'
'Set up initial variables
'
qm = chr(34)
sqm = chr(39)
set WshShl = WScript.CreateObject("WScript.shell")

sOut = "No Java Installed"
On Error Resume Next
sVersion = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime
Environment\CurrentVersion")
sJava = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\" &
sVersion & "\JavaHome")
On Error Goto 0

sJava = sJava + "\bin\java.exe"
sCommand = sJava + " -version"
set oCommand = WshShl.Exec(sCommand)

iCount = 10

Do While oCommand.Status = 0
*WScript.Sleep*100
Loop
'WScript.Sleep 1000
25
sOut = oCommand.StdErr.ReadAll

WScript.StdOut.WriteLine("Command: ")
'WScript.StdOut.WriteLine("Command: " & sJava)
'WScript.StdOut.WriteLine(sOut)
WScript.StdOut.WriteLine(sVersion
Jul 17 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Okay -- did I not provide enough information on this? It would be helpful
if someone could at least let me know if this sounds like a bad install or
something. I want the system I'm working on to be multiplatform, and I
need to be able to count on VBScript to do that. If VBScript is so
inherently unstable it is not uncommon to have problems like this, or if
there is no answer to problems like this, then it is not usable for my
purposes.

Could someone at least give me a few suggestions -- or comments, like is
this kind of problem common, does it indicate a bad install? Did I do
something wrong, or is the code okay, but there is no way to tell why it's
not working?

I'd really like to get some ideas on this, but if I don't, I'll just have to
tell my clients they need a separate computer to run my system (so far all
clients have had no issue with this -- the system I use raises their profit
margin enough to make it a worthwhile investment) and that it is not
possible to make it work on Windows. It's not that I'm trying to threaten,
but when I started this, I found quick support from the Perl and Linux
communities and my experience with VBScript and other questions is like
this -- I can ask questions and not even get an answer like, "Your code
looks okay, and I can't see anything wrong with it." I've never posed a
question on ANY Java, Perl, or Linux forum and had no answers at all. It's
very frustrating, and if there is a reason I'm not getting ANY answers on
this, I'd like to know.

Hal

Hal Vaughan wrote:
I have a script used to find and run Java on a Windows system.**It*worked
fine on original tests (on a Windows XP system).**It's*now*running*on*a
Windows 2000 (sp3) system, and it won't work -- the problem is this line:

set oCommand = WshShl.Exec(sCommand)

(it's about halfway down)**Is*there*a*problem*with*the*Exec*method*in* some
versions of VBS?**Is*the*problem*Windows*version*I'm*on,*or*is *it
something more obvious that I'm just not seeing?

The error is that the object doesn't support the Exec method.**(I've*also
substituted the string sCommand with "C:\WINNT\System32\sol.exe" just to
make a quick check, and it makes no difference (not that it should with
that error message, I just wanted to try a .exe I knew was there and
working).

Thanks for any help!

Hal

'
'Set up initial variables
'
qm = chr(34)
sqm = chr(39)
set WshShl = WScript.CreateObject("WScript.shell")

sOut = "No Java Installed"
On Error Resume Next
sVersion = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime
Environment\CurrentVersion")
sJava = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\"
& sVersion & "\JavaHome")
On Error Goto 0

sJava = sJava + "\bin\java.exe"
sCommand = sJava + " -version"
set oCommand = WshShl.Exec(sCommand)

iCount = 10

Do While oCommand.Status = 0
WScript.Sleep*100
Loop
'WScript.Sleep 1000
25
sOut = oCommand.StdErr.ReadAll

WScript.StdOut.WriteLine("Command: ")
'WScript.StdOut.WriteLine("Command: " & sJava)
'WScript.StdOut.WriteLine(sOut)
WScript.StdOut.WriteLine(sVersion


Jul 17 '05 #2

P: n/a
This is a VB group, not VBScript. They're not
the same thing. That's probably why you
didn't get an answer.

It sounds like you've got v. 5.1 of the Windows
Script Host on the machine. I'm fairly certain
that Exec is only in v. 5.6. You can fix it by updating
the WSH to v. 5.6.

For WSH questions:
microsoft.public.scripting.wsh
--
_____________________________

ma**********@mindYYspring.com
For return email remove XX and YY.
_____________________________
Hal Vaughan <ha*@thresholddigital.com> wrote in message
news:k5********************@comcast.com...
I have a script used to find and run Java on a Windows system. It worked
fine on original tests (on a Windows XP system). It's now running on a
Windows 2000 (sp3) system, and it won't work -- the problem is this line:

set oCommand = WshShl.Exec(sCommand)

(it's about halfway down) Is there a problem with the Exec method in some
versions of VBS? Is the problem Windows version I'm on, or is it something
more obvious that I'm just not seeing?

The error is that the object doesn't support the Exec method. (I've also
substituted the string sCommand with "C:\WINNT\System32\sol.exe" just to
make a quick check, and it makes no difference (not that it should with
that error message, I just wanted to try a .exe I knew was there and
working).

Thanks for any help!

Hal

'
'Set up initial variables
'
qm = chr(34)
sqm = chr(39)
set WshShl = WScript.CreateObject("WScript.shell")

sOut = "No Java Installed"
On Error Resume Next
sVersion = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime
Environment\CurrentVersion")
sJava = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\" & sVersion & "\JavaHome")
On Error Goto 0

sJava = sJava + "\bin\java.exe"
sCommand = sJava + " -version"
set oCommand = WshShl.Exec(sCommand)

iCount = 10

Do While oCommand.Status = 0
WScript.Sleep 100
Loop
'WScript.Sleep 1000
25
sOut = oCommand.StdErr.ReadAll

WScript.StdOut.WriteLine("Command: ")
'WScript.StdOut.WriteLine("Command: " & sJava)
'WScript.StdOut.WriteLine(sOut)
WScript.StdOut.WriteLine(sVersion

Jul 17 '05 #3

P: n/a
mayayana wrote:
This is a VB group, not VBScript. They're not
the same thing. That's probably why you
didn't get an answer.
Thank you.

To someone who does no work with these languages regularly, it is an easy
mistake to make. If someone had passed that on to me and answered my
question with that when I posted it a week ago, it would have saved me a
week.
It sounds like you've got v. 5.1 of the Windows
Script Host on the machine. I'm fairly certain
that Exec is only in v. 5.6. You can fix it by updating
the WSH to v. 5.6.

For WSH questions:
microsoft.public.scripting.wsh
Thanks. I'll check which version I have (that's important -- I have to be
able to count on what is installed on the client's system, which means if a
copy of Win2k as recent as SP3 doesn't have it, I can't count on it being
on my clients' systems -- which means I'll either have to add something to
install 5.6 before installing my program, or not support Win2k.

Thank you!

Hal
--
_____________________________

ma**********@mindYYspring.com
For return email remove XX and YY.
_____________________________
Hal Vaughan <ha*@thresholddigital.com> wrote in message
news:k5********************@comcast.com...
I have a script used to find and run Java on a Windows system. It worked
fine on original tests (on a Windows XP system). It's now running on a
Windows 2000 (sp3) system, and it won't work -- the problem is this line:

set oCommand = WshShl.Exec(sCommand)

(it's about halfway down) Is there a problem with the Exec method in some
versions of VBS? Is the problem Windows version I'm on, or is it
something more obvious that I'm just not seeing?

The error is that the object doesn't support the Exec method. (I've also
substituted the string sCommand with "C:\WINNT\System32\sol.exe" just to
make a quick check, and it makes no difference (not that it should with
that error message, I just wanted to try a .exe I knew was there and
working).

Thanks for any help!

Hal

'
'Set up initial variables
'
qm = chr(34)
sqm = chr(39)
set WshShl = WScript.CreateObject("WScript.shell")

sOut = "No Java Installed"
On Error Resume Next
sVersion = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime
Environment\CurrentVersion")
sJava = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\"

&
sVersion & "\JavaHome")
On Error Goto 0

sJava = sJava + "\bin\java.exe"
sCommand = sJava + " -version"
set oCommand = WshShl.Exec(sCommand)

iCount = 10

Do While oCommand.Status = 0
WScript.Sleep 100
Loop
'WScript.Sleep 1000
25
sOut = oCommand.StdErr.ReadAll

WScript.StdOut.WriteLine("Command: ")
'WScript.StdOut.WriteLine("Command: " & sJava)
'WScript.StdOut.WriteLine(sOut)
WScript.StdOut.WriteLine(sVersion


Jul 17 '05 #4

P: n/a
I'm not familiar with using Exec and StdOut (I don't have
WSH 5.6 installed), so I'm not sure how necessary
that is to your script, but you might take a look at the
Run method of WScript.Shell. It runs a program in
the same way that Exec does but Exec does it in a
"command shell" (which I gather is a DOS window)
and provides the StdIn and StdOut methods.

Run (strCommand, [intWindowStyle], [bWaitOnReturn])

You might be able to use Run with bWaitOnReturn set
to True, in which case you get an error code return if
it's used as a function. The Textstream object, then,
would be the equivalent of StdOut, the difference being that
Textstream writes to a file rather than a command window.
If you wanted current visual feedback you'd need to use
a MsgBox.
_____________________________

ma**********@mindYYspring.com
For return email remove XX and YY.
_____________________________
Hal Vaughan <ha*@thresholddigital.com> wrote in message
news:bK********************@comcast.com...
mayayana wrote:
This is a VB group, not VBScript. They're not
the same thing. That's probably why you
didn't get an answer.
Thank you.

To someone who does no work with these languages regularly, it is an easy
mistake to make. If someone had passed that on to me and answered my
question with that when I posted it a week ago, it would have saved me a
week.
It sounds like you've got v. 5.1 of the Windows
Script Host on the machine. I'm fairly certain
that Exec is only in v. 5.6. You can fix it by updating
the WSH to v. 5.6.

For WSH questions:
microsoft.public.scripting.wsh


Thanks. I'll check which version I have (that's important -- I have to be
able to count on what is installed on the client's system, which means if

a copy of Win2k as recent as SP3 doesn't have it, I can't count on it being
on my clients' systems -- which means I'll either have to add something to
install 5.6 before installing my program, or not support Win2k.

Thank you!

Hal
--
_____________________________

ma**********@mindYYspring.com
For return email remove XX and YY.
_____________________________
Hal Vaughan <ha*@thresholddigital.com> wrote in message
news:k5********************@comcast.com...
I have a script used to find and run Java on a Windows system. It worked fine on original tests (on a Windows XP system). It's now running on a
Windows 2000 (sp3) system, and it won't work -- the problem is this line:
set oCommand = WshShl.Exec(sCommand)

(it's about halfway down) Is there a problem with the Exec method in some versions of VBS? Is the problem Windows version I'm on, or is it
something more obvious that I'm just not seeing?

The error is that the object doesn't support the Exec method. (I've also substituted the string sCommand with "C:\WINNT\System32\sol.exe" just to make a quick check, and it makes no difference (not that it should with
that error message, I just wanted to try a .exe I knew was there and
working).

Thanks for any help!

Hal

'
'Set up initial variables
'
qm = chr(34)
sqm = chr(39)
set WshShl = WScript.CreateObject("WScript.shell")

sOut = "No Java Installed"
On Error Resume Next
sVersion = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime
Environment\CurrentVersion")
sJava = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime
Environment\" &
sVersion & "\JavaHome")
On Error Goto 0

sJava = sJava + "\bin\java.exe"
sCommand = sJava + " -version"
set oCommand = WshShl.Exec(sCommand)

iCount = 10

Do While oCommand.Status = 0
WScript.Sleep 100
Loop
'WScript.Sleep 1000
25
sOut = oCommand.StdErr.ReadAll

WScript.StdOut.WriteLine("Command: ")
'WScript.StdOut.WriteLine("Command: " & sJava)
'WScript.StdOut.WriteLine(sOut)
WScript.StdOut.WriteLine(sVersion

Jul 17 '05 #5

P: n/a
mayayana wrote:
I'm not familiar with using Exec and StdOut (I don't have
WSH 5.6 installed), so I'm not sure how necessary
that is to your script, but you might take a look at the
Run method of WScript.Shell. It runs a program in
the same way that Exec does but Exec does it in a
"command shell" (which I gather is a DOS window)
and provides the StdIn and StdOut methods.

Run (strCommand, [intWindowStyle], [bWaitOnReturn])

You might be able to use Run with bWaitOnReturn set
to True, in which case you get an error code return if
it's used as a function. The Textstream object, then,
would be the equivalent of StdOut, the difference being that
Textstream writes to a file rather than a command window.
If you wanted current visual feedback you'd need to use
a MsgBox.
I knew and have used the Run() method.**I*was*using*Exec()*because*I*needed
to read STDOUT.**I*did*not*know*I*could*use*a*Textstream*o bject*to*read*the
output from a Run() method.**That*could*be*a*BIG*help,*since*it'll*let *me
use an earlier version, which would be "stock" on more systems.

Thank you!

Hal
_____________________________

ma**********@mindYYspring.com
For return email remove XX and YY.
_____________________________
Hal Vaughan <ha*@thresholddigital.com> wrote in message
news:bK********************@comcast.com...
mayayana wrote:
> This is a VB group, not VBScript. They're not
> the same thing. That's probably why you
> didn't get an answer.


Thank you.

To someone who does no work with these languages regularly, it is an easy
mistake to make. If someone had passed that on to me and answered my
question with that when I posted it a week ago, it would have saved me a
week.
> It sounds like you've got v. 5.1 of the Windows
> Script Host on the machine. I'm fairly certain
> that Exec is only in v. 5.6. You can fix it by updating
> the WSH to v. 5.6.
>
> For WSH questions:
> microsoft.public.scripting.wsh


Thanks. I'll check which version I have (that's important -- I have to
be able to count on what is installed on the client's system, which means
if

a
copy of Win2k as recent as SP3 doesn't have it, I can't count on it being
on my clients' systems -- which means I'll either have to add something
to install 5.6 before installing my program, or not support Win2k.

Thank you!

Hal
> --
> _____________________________
>
> ma**********@mindYYspring.com
> For return email remove XX and YY.
> _____________________________
> Hal Vaughan <ha*@thresholddigital.com> wrote in message
> news:k5********************@comcast.com...
>> I have a script used to find and run Java on a Windows system. It worked >> fine on original tests (on a Windows XP system). It's now running on a
>> Windows 2000 (sp3) system, and it won't work -- the problem is this line: >>
>> set oCommand = WshShl.Exec(sCommand)
>>
>> (it's about halfway down) Is there a problem with the Exec method in some >> versions of VBS? Is the problem Windows version I'm on, or is it
>> something more obvious that I'm just not seeing?
>>
>> The error is that the object doesn't support the Exec method. (I've also >> substituted the string sCommand with "C:\WINNT\System32\sol.exe" just to >> make a quick check, and it makes no difference (not that it should
>> with that error message, I just wanted to try a .exe I knew was there
>> and working).
>>
>> Thanks for any help!
>>
>> Hal
>>
>> '
>> 'Set up initial variables
>> '
>> qm = chr(34)
>> sqm = chr(39)
>> set WshShl = WScript.CreateObject("WScript.shell")
>>
>> sOut = "No Java Installed"
>> On Error Resume Next
>> sVersion = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime
>> Environment\CurrentVersion")
>> sJava = WshShl.RegRead("HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\" > &
>> sVersion & "\JavaHome")
>> On Error Goto 0
>>
>> sJava = sJava + "\bin\java.exe"
>> sCommand = sJava + " -version"
>> set oCommand = WshShl.Exec(sCommand)
>>
>> iCount = 10
>>
>> Do While oCommand.Status = 0
>> WScript.Sleep 100
>> Loop
>> 'WScript.Sleep 1000
>> 25
>> sOut = oCommand.StdErr.ReadAll
>>
>> WScript.StdOut.WriteLine("Command: ")
>> 'WScript.StdOut.WriteLine("Command: " & sJava)
>> 'WScript.StdOut.WriteLine(sOut)
>> WScript.StdOut.WriteLine(sVersion


Jul 17 '05 #6

P: n/a
I didn't mean that you can use Textstream to
read the output. I meant that the Textstream methods
are analogous to the StdOut methods and that
TextStream could be used to write the data to file
if necessary.

There are two things you need:
1) The return info. from StdErr and
2) The write ability of StdOut.

I'm not able to give you a clear answer because I don't
know where StdOut.WriteLine is actually writing a line
(log file? DOS window?), and I don't know what info. you
get from StdErr.
Run() can return an error code but I don't know whether
that's the same thing.
I knew and have used the Run() method. I was using Exec() because I needed
to read STDOUT. I did not know I could use a Textstream object to read the
output from a Run() method. That could be a BIG help, since it'll let me
use an earlier version, which would be "stock" on more systems.


Jul 17 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.