Exec method won't work

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Hal Vaughan

    Exec method won't work

    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(sCo mmand)

    (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\Syste m32\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.CreateO bject("WScript. shell")

    sOut = "No Java Installed"
    On Error Resume Next
    sVersion = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime
    Environment\Cur rentVersion")
    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(sCo mmand)

    iCount = 10

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

    WScript.StdOut. WriteLine("Comm and: ")
    'WScript.StdOut .WriteLine("Com mand: " & sJava)
    'WScript.StdOut .WriteLine(sOut )
    WScript.StdOut. WriteLine(sVers ion
  • Hal Vaughan

    #2
    Re: Exec method won't work

    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:
    [color=blue]
    > 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(sCo mmand)
    >
    > (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\Syste m32\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.CreateO bject("WScript. shell")
    >
    > sOut = "No Java Installed"
    > On Error Resume Next
    > sVersion = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime
    > Environment\Cur rentVersion")
    > 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(sCo mmand)
    >
    > iCount = 10
    >
    > Do While oCommand.Status = 0
    > WScript.Sleep 100
    > Loop
    > 'WScript.Sleep 1000
    > 25
    > sOut = oCommand.StdErr .ReadAll
    >
    > WScript.StdOut. WriteLine("Comm and: ")
    > 'WScript.StdOut .WriteLine("Com mand: " & sJava)
    > 'WScript.StdOut .WriteLine(sOut )
    > WScript.StdOut. WriteLine(sVers ion[/color]

    Comment

    • mayayana

      #3
      Re: Exec method won't work

      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.publi c.scripting.wsh
      --
      _______________ ______________

      mayayXXana1a@mi ndYYspring.com
      For return email remove XX and YY.
      _______________ ______________
      Hal Vaughan <hal@thresholdd igital.com> wrote in message
      news:k5SdnUhlPJ JnnxncRVn-uw@comcast.com. ..[color=blue]
      > 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(sCo mmand)
      >
      > (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\Syste m32\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.CreateO bject("WScript. shell")
      >
      > sOut = "No Java Installed"
      > On Error Resume Next
      > sVersion = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime
      > Environment\Cur rentVersion")
      > sJava = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime Environment\"[/color]
      &[color=blue]
      > sVersion & "\JavaHome" )
      > On Error Goto 0
      >
      > sJava = sJava + "\bin\java. exe"
      > sCommand = sJava + " -version"
      > set oCommand = WshShl.Exec(sCo mmand)
      >
      > iCount = 10
      >
      > Do While oCommand.Status = 0
      > WScript.Sleep 100
      > Loop
      > 'WScript.Sleep 1000
      > 25
      > sOut = oCommand.StdErr .ReadAll
      >
      > WScript.StdOut. WriteLine("Comm and: ")
      > 'WScript.StdOut .WriteLine("Com mand: " & sJava)
      > 'WScript.StdOut .WriteLine(sOut )
      > WScript.StdOut. WriteLine(sVers ion[/color]


      Comment

      • Hal Vaughan

        #4
        Re: Exec method won't work

        mayayana wrote:
        [color=blue]
        > This is a VB group, not VBScript. They're not
        > the same thing. That's probably why you
        > didn't get an answer.[/color]

        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.
        [color=blue]
        > 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.publi c.scripting.wsh[/color]

        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
        [color=blue]
        > --
        > _______________ ______________
        >
        > mayayXXana1a@mi ndYYspring.com
        > For return email remove XX and YY.
        > _______________ ______________
        > Hal Vaughan <hal@thresholdd igital.com> wrote in message
        > news:k5SdnUhlPJ JnnxncRVn-uw@comcast.com. ..[color=green]
        >> 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(sCo mmand)
        >>
        >> (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\Syste m32\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.CreateO bject("WScript. shell")
        >>
        >> sOut = "No Java Installed"
        >> On Error Resume Next
        >> sVersion = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime
        >> Environment\Cur rentVersion")
        >> sJava = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime Environment\"[/color]
        > &[color=green]
        >> sVersion & "\JavaHome" )
        >> On Error Goto 0
        >>
        >> sJava = sJava + "\bin\java. exe"
        >> sCommand = sJava + " -version"
        >> set oCommand = WshShl.Exec(sCo mmand)
        >>
        >> iCount = 10
        >>
        >> Do While oCommand.Status = 0
        >> WScript.Sleep 100
        >> Loop
        >> 'WScript.Sleep 1000
        >> 25
        >> sOut = oCommand.StdErr .ReadAll
        >>
        >> WScript.StdOut. WriteLine("Comm and: ")
        >> 'WScript.StdOut .WriteLine("Com mand: " & sJava)
        >> 'WScript.StdOut .WriteLine(sOut )
        >> WScript.StdOut. WriteLine(sVers ion[/color][/color]

        Comment

        • mayayana

          #5
          Re: Exec method won't work

          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.
          _______________ ______________

          mayayXXana1a@mi ndYYspring.com
          For return email remove XX and YY.
          _______________ ______________
          Hal Vaughan <hal@thresholdd igital.com> wrote in message
          news:bKmdnRFsF5 C6RRHcRVn-jg@comcast.com. ..[color=blue]
          > mayayana wrote:
          >[color=green]
          > > This is a VB group, not VBScript. They're not
          > > the same thing. That's probably why you
          > > didn't get an answer.[/color]
          >
          > 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.
          >[color=green]
          > > 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.publi c.scripting.wsh[/color]
          >
          > 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[/color]
          a[color=blue]
          > 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
          >[color=green]
          > > --
          > > _______________ ______________
          > >
          > > mayayXXana1a@mi ndYYspring.com
          > > For return email remove XX and YY.
          > > _______________ ______________
          > > Hal Vaughan <hal@thresholdd igital.com> wrote in message
          > > news:k5SdnUhlPJ JnnxncRVn-uw@comcast.com. ..[color=darkred]
          > >> I have a script used to find and run Java on a Windows system. It[/color][/color][/color]
          worked[color=blue][color=green][color=darkred]
          > >> 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[/color][/color][/color]
          line:[color=blue][color=green][color=darkred]
          > >>
          > >> set oCommand = WshShl.Exec(sCo mmand)
          > >>
          > >> (it's about halfway down) Is there a problem with the Exec method in[/color][/color][/color]
          some[color=blue][color=green][color=darkred]
          > >> 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[/color][/color][/color]
          also[color=blue][color=green][color=darkred]
          > >> substituted the string sCommand with "C:\WINNT\Syste m32\sol.exe" just[/color][/color][/color]
          to[color=blue][color=green][color=darkred]
          > >> 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.CreateO bject("WScript. shell")
          > >>
          > >> sOut = "No Java Installed"
          > >> On Error Resume Next
          > >> sVersion = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime
          > >> Environment\Cur rentVersion")
          > >> sJava = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime[/color][/color][/color]
          Environment\"[color=blue][color=green]
          > > &[color=darkred]
          > >> sVersion & "\JavaHome" )
          > >> On Error Goto 0
          > >>
          > >> sJava = sJava + "\bin\java. exe"
          > >> sCommand = sJava + " -version"
          > >> set oCommand = WshShl.Exec(sCo mmand)
          > >>
          > >> iCount = 10
          > >>
          > >> Do While oCommand.Status = 0
          > >> WScript.Sleep 100
          > >> Loop
          > >> 'WScript.Sleep 1000
          > >> 25
          > >> sOut = oCommand.StdErr .ReadAll
          > >>
          > >> WScript.StdOut. WriteLine("Comm and: ")
          > >> 'WScript.StdOut .WriteLine("Com mand: " & sJava)
          > >> 'WScript.StdOut .WriteLine(sOut )
          > >> WScript.StdOut. WriteLine(sVers ion[/color][/color]
          >[/color]


          Comment

          • Hal Vaughan

            #6
            Re: Exec method won't work

            mayayana wrote:
            [color=blue]
            > 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.[/color]

            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.

            Thank you!

            Hal
            [color=blue]
            > _______________ ______________
            >
            > mayayXXana1a@mi ndYYspring.com
            > For return email remove XX and YY.
            > _______________ ______________
            > Hal Vaughan <hal@thresholdd igital.com> wrote in message
            > news:bKmdnRFsF5 C6RRHcRVn-jg@comcast.com. ..[color=green]
            >> mayayana wrote:
            >>[color=darkred]
            >> > This is a VB group, not VBScript. They're not
            >> > the same thing. That's probably why you
            >> > didn't get an answer.[/color]
            >>
            >> 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.
            >>[color=darkred]
            >> > 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.publi c.scripting.wsh[/color]
            >>
            >> 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[/color]
            > a[color=green]
            >> 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
            >>[color=darkred]
            >> > --
            >> > _______________ ______________
            >> >
            >> > mayayXXana1a@mi ndYYspring.com
            >> > For return email remove XX and YY.
            >> > _______________ ______________
            >> > Hal Vaughan <hal@thresholdd igital.com> wrote in message
            >> > news:k5SdnUhlPJ JnnxncRVn-uw@comcast.com. ..
            >> >> I have a script used to find and run Java on a Windows system. It[/color][/color]
            > worked[color=green][color=darkred]
            >> >> 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[/color][/color]
            > line:[color=green][color=darkred]
            >> >>
            >> >> set oCommand = WshShl.Exec(sCo mmand)
            >> >>
            >> >> (it's about halfway down) Is there a problem with the Exec method in[/color][/color]
            > some[color=green][color=darkred]
            >> >> 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[/color][/color]
            > also[color=green][color=darkred]
            >> >> substituted the string sCommand with "C:\WINNT\Syste m32\sol.exe" just[/color][/color]
            > to[color=green][color=darkred]
            >> >> 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.CreateO bject("WScript. shell")
            >> >>
            >> >> sOut = "No Java Installed"
            >> >> On Error Resume Next
            >> >> sVersion = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime
            >> >> Environment\Cur rentVersion")
            >> >> sJava = WshShl.RegRead( "HKLM\SOFTWARE\ JavaSoft\Java Runtime[/color][/color]
            > Environment\"[color=green][color=darkred]
            >> > &
            >> >> sVersion & "\JavaHome" )
            >> >> On Error Goto 0
            >> >>
            >> >> sJava = sJava + "\bin\java. exe"
            >> >> sCommand = sJava + " -version"
            >> >> set oCommand = WshShl.Exec(sCo mmand)
            >> >>
            >> >> iCount = 10
            >> >>
            >> >> Do While oCommand.Status = 0
            >> >> WScript.Sleep 100
            >> >> Loop
            >> >> 'WScript.Sleep 1000
            >> >> 25
            >> >> sOut = oCommand.StdErr .ReadAll
            >> >>
            >> >> WScript.StdOut. WriteLine("Comm and: ")
            >> >> 'WScript.StdOut .WriteLine("Com mand: " & sJava)
            >> >> 'WScript.StdOut .WriteLine(sOut )
            >> >> WScript.StdOut. WriteLine(sVers ion[/color]
            >>[/color][/color]

            Comment

            • mayayana

              #7
              Re: Exec method won't work

              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.WriteLin e 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.
              [color=blue]
              > 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.
              >[/color]



              Comment

              Working...