Back with another rudimentary question. It's almost working. But for
some reason, I get an error when I try to run the script, "cannot find
specified file". But the path is absolutely correct. The file is clearly
there.
The error occurs in the line highlighted below. What's weird is that the
command prompt correctly opens, with the directory correctly displaying
as "F:\Scripts > ". But then it can't find the file in that folder,
which is clearly there.
Am I doing something incorrect in my use of the shell object?
Dim oShell
Dim myPath
myPath = "F:\Scripts\Test.vbs"
Dim myUser
myUser = "AB03"
Dim myPass
myPass = "passAB03"
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /K CD C:\runasspc"
oShell.run "runasspc.exe /program:myPath /user:myUser /password:myPass
/quiet"
Set oShell = Nothing
--- In [email protected], "ozzyapeman" <zoopf...@...> wrote:
>
> Okay, I'm answering my own question...but for anyone who is as new to
> scripting as I am, the Wscript.shell object should do the trick.
>
> For e.g. The following VBScript code opens a command window, changes
to
> the path to C:\ , and executes the DIR command.
>
> Dim oShell
> Set oShell = WScript.CreateObject ("WScript.Shell")
> oShell.run "cmd /K CD C:\ & Dir"
> Set oShell = Nothing
>
> So I can basically run whatever I want in the command prompt, such as
my
> RunAsSPC command line for each individual script.
>
>
> --- In [email protected], "ozzyapeman" zoopfree@ wrote:
> >
> > To clarify, at the current time I simply double click on a VBscript
> > file, when I am logged in as the main user, and it launches my
> Amibroker
> > optimizations as that user.
> >
> > But now, logged in as main user, I want to instead use RunAsSPC to
> > launch the script, and pass it an alternate User/Pass - but I want
to
> do
> > this by double clicking on yet another script (a launch script for
> this
> > RunAsSPC command).
> >
> > That is what I am having difficulty trying to figure out. Again, I
am
> > sure this is as basic as it gets, as far as scripting or BAT files
are
> > concerned. I just have minimal experience in those regards.
> >
> >
> > --- In [email protected], "ozzyapeman" zoopfree@ wrote:
> > >
> > > Thanks Mike. That makes sense. :-)
> > >
> > > I guess what I am also trying to figure out - is how do I launch
> said
> > > scripts without having to manually open a command prompt and
> manually
> > > type in something like the following for each of the 8 scripts:
> > >
> > > c:\runasspc\runasspc.exe /program:"c:\myVBscript.vbs /user:"AB03"
> > > /password:"passAB03" /quiet
> > >
> > > I am not familiar with WShell, or creating BAT files, or even with
> > > launching the command prompt from within a script.
> > >
> > > How would I write a simple script that would simply run the above
> line
> > > within the command prompt? So that when I double click on such a
> file,
> > > the above referenced VBscript launches under the correct user? I
am
> > sure
> > > this is a simple thing to do, I just have no idea how, and wading
> > > through various manuals has not helped so far.
> > >
> > > Of course in a worse case scenario, I could just manually type the
> > above
> > > sort of thing into the command prompt for each script I want to
> > launch,
> > > but that feels unnecessarily primitive.
> > >
> > >
> > > --- In [email protected], "Mike" sfclimbers@ wrote:
> > > >
> > > > You run the VBScript as the other user! Anything done from
within
> > the
> > > script will be done as the user of which the script was launched.
> > > >
> > > > Whatever means you were using to run the script as the current
> user,
> > > just do the same using your runas utility.
> > > >
> > > > Mike
> > > >
> > > > --- In [email protected], "ozzyapeman" zoopfree@ wrote:
> > > > >
> > > > > Okay, since I am using Windows Vista, which does not have the
> same
> > > RunAs
> > > > > utility as Win XP, I had to install a utility, RunAsSPC. That
> > > utility
> > > > > works fine in manual testing.
> > > > >
> > > > > For example, if I am logged in as User: AB01 but want to open
> > > broker.exe
> > > > > under User: AB03, I just type the following in the command
> prompt:
> > > > >
> > > > > cd c:\runasspc
> > > > >
> > > > > c:\runasspc\runasspc.exe /program:"c:\Program Files
> > > > > (x86)\Amibroker\Broker.exe" /user:"AB03" /password:"passAB03"
> > /quiet
> > > > >
> > > > > And it will open broker.exe under AB03 while I remain logged
in
> as
> > > AB01.
> > > > >
> > > > > But the issue that is still dogging me is - how do I now
> integrate
> > > the
> > > > > above with my VBScript to ensure that when I create the broker
> > > object,
> > > > > that it does so under user AB03, intead of user AB01?
> > > > >
> > > > > In other words, what goes at the top of the following VBScript
> > code?
> > > Do
> > > > > I need to add some kind of windows script to call the above
> > command
> > > > > line, or some other script that allocates any actions to a
> > specific
> > > > > user? Anyone have any idea what such a line would look like? I
> am
> > > going
> > > > > through the Windows Script Host manual, and I find it somewhat
> > > > > confusing.
> > > > >
> > > > > Thanks for any input.
> > > > >
> > > > >
> > > > > dim AB
> > > > > set AB = CreateObject("Broker.Application")
> > > > >
> > > > > dim AA
> > > > > set AA = AB.Analysis
> > > > >
> > > > > AB.LoadDatabase( Database )
> > > > > AA.LoadSettings( Settings )
> > > > > AB.ActiveDocument.Name = "EURUSD" ' Set EURUSD as
active
> > > document
> > > > >
> > > > >
> > > > > AA.LoadFormula( Formula1 ) ' load
formula
> > > from
> > > > > external file
> > > > > AA.ApplyTo = 1
> '
> > > use
> > > > > current symbol
> > > > > AA.RangeMode = 3 '
> use
> > > 'From'
> > > > > and 'To' dates
> > > > > AA.RangeFromDate = FromDate
> > > > > AA.RangeToDate = ToDate
> > > > > AA.Optimize( 0 )
> > > > >
> > > > >
> > > > > --- In [email protected], "ozzyapeman" <zoopfree@>
> wrote:
> > > > > >
> > > > > > Thanks, Mike.
> > > > > >
> > > > > >
> > > > > > --- In [email protected], "Mike" sfclimbers@ wrote:
> > > > > > >
> > > > > > > You will need to run each instance as a separate user.
Each
> > user
> > > > > must have permission to run the application. It is not
necessary
> > to
> > > log
> > > > > in/out of each user account to start the process.
> > > > > > >
> > > > > > > You can read the setup requirements of MCO in the Files
> > section
> > > of
> > > > > this group for setting up the users. Then just use the built
in
> > > Windows
> > > > > "runas" command to fire off each process from a single account
> but
> > > > > running as a different user.
> > > > > > >
> > > > > > > http://support.microsoft.com/kb/294676
> > > > > > >
> > > > > > > Keep in mind that if you are using AddToComposite, you
will
> > run
> > > into
> > > > > trouble whenever you have multiple instances of AmiBroker
> running
> > > > > against the same database (each will write over the other,
last
> > > write
> > > > > wins). You can overcome that by generating dynamic composite
> names
> > > (e.g.
> > > > > based on the user name).
> > > > > > >
> > > > > > > Mike
> > > > > > >
> > > > > > > --- In [email protected], "ozzyapeman" <zoopfree@>
> > > wrote:
> > > > > > > >
> > > > > > > > Recently I've been automating some of my optimizations
and
> > > > > backtests
> > > > > > > > using external VBScript.
> > > > > > > >
> > > > > > > > When I run Amibroker manually, I can usually run up to 6
> > > separate
> > > > > > > > instances under a single User, which allows me to run
> > > > > optimizations on 6
> > > > > > > > different AFLs simultaneously. But when I try to run 6
> > > different
> > > > > > > > VBScripts, each calling a unique AFL, they collide which
> > each
> > > > > other, and
> > > > > > > > cause errors.
> > > > > > > >
> > > > > > > > Without logging out, and logging back into windows as a
> > > separate
> > > > > User,
> > > > > > > > how can I automate multiple optimizations using
scripting?
> > > > > > > >
> > > > > > > > Below is a typical snippet of code. How do I instruct
> > VBScript
> > > to
> > > > > call a
> > > > > > > > unique Broker.Application, so that all scripts do not
try
> to
> > > call
> > > > > the
> > > > > > > > exact same instance of Amibroker? Is this even possible?
> > > Thanks
> > > > > for any
> > > > > > > > input.
> > > > > > > >
> > > > > > > >
> > > > > > > > dim AB
> > > > > > > > set AB = CreateObject("Broker.Application")
> > > > > > > >
> > > > > > > > dim AA
> > > > > > > > set AA = AB.Analysis
> > > > > > > >
> > > > > > > > AB.LoadDatabase( Database )
> > > > > > > > AA.LoadSettings( Settings )
> > > > > > > > AB.ActiveDocument.Name = "EURUSD" ' Set EURUSD as
> > > active
> > > > > document
> > > > > > > >
> > > > > > > >
> > > > > > > > AA.LoadFormula( Formula1 ) ' load
> > > formula
> > > > > from
> > > > > > > > external file
> > > > > > > > AA.ApplyTo = 1
> > > '
> > > > > use
> > > > > > > > current symbol
> > > > > > > > AA.RangeMode = 3
> > '
> > > use
> > > > > 'From'
> > > > > > > > and 'To' dates
> > > > > > > > AA.RangeFromDate = FromDate
> > > > > > > > AA.RangeToDate = ToDate
> > > > > > > > AA.Optimize( 0 )
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>