Avatar of elwayisgod
elwayisgod
Flag for United States of America asked on

Execute a .vbs file from another vbs file - not working

I have a .vbs script that works fine when I run it from command prompt.  However I need to execute it from within another 'Master' vbs file.  I needs the false parameter as it doesn't need to wait...

Attached is the Master.vbs file

Line 253 is where it all starts... I just need the 'splice_years.vbs' script to run....
master.vbs
VB ScriptVisual Basic Classic

Avatar of undefined
Last Comment
RobSampson

8/22/2022 - Mon
elwayisgod

ASKER
Well maybe something is wrong.  I try and fire it up via 'cscript splice_years.vbs' and get:


D:\AppFiles\SDS\SDS_Retail_R3\Scripts>cscript splice_years.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

start - 12/27/2012 12:47:00 PM
file actfisc.txt - 12/27/2012 12:47:00 PM
D:\AppFiles\SDS\SDS_Retail_R3\Scripts\splice_years.vbs(26, 2) Microsoft VBScript
 runtime error: File not found


D:\AppFiles\SDS\SDS_Retail_R3\Scripts>
elwayisgod

ASKER
Here's the vbs file i want to execute.  No idea why it won't in this directory.  in my test directory it runs fine...
splice-years.vbs
kaufmed

Here's an example of running a script from another:

Main
Set shell = WScript.CreateObject("WScript.Shell")

result = shell.Run("second_script.vbs",,True)

MsgBox(result)

Open in new window


Second Script
MsgBox "Yay!"

WScript.Quit(-1)

Open in new window

I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck
elwayisgod

ASKER
So the 'splice_years.vbs' must be in the data directory for it to run.  Why can't it be in the scripts directory?   Isn't it pointing to the data directory in the script to let it know where the data files that need spliced up reside?
kaufmed

It shouldn't need to be in the same directory. I just had my example set up that way. Just make sure you properly point to the target file, either with an absolute path (as you seem to be doing) or with a correct relative path.
shorvath

Const C_FILELIST = "filelist.txt"

8 lines later

Set objFilelist = objFSO.OpenTextFile(C_FILELIST, 1, False)


If  "filelist.txt" does not exist in the folder where you are running Master.VBS you are going to have to specify the full path and file name.
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
elwayisgod

ASKER
Back tomorrow to try and resolve.
ASKER CERTIFIED SOLUTION
RobSampson

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
elwayisgod

ASKER
I will try and give this a try today.  Just slammed right now.
elwayisgod

ASKER
OK.  So right now attached is my 'splice_years.vbs' script.  This script needs to reside in the 'D:\AppFiles\SDS\SDS_Retail_R3\scripts' directory.  The data files it needs to process against are in the 'D:\AppFiles\SDS\SDS_Retail_R3\Data' directory. How can I edit this to make that work?
splice-years.vbs
Your help has saved me hundreds of hours of internet surfing.
fblack61
elwayisgod

ASKER
OK.  When I launch the 'splice_years.vbs' form the command prompt in the 'scripts' direcotry, I get the below error.  I had to copy the 'actfisc.txt' file into the 'scripts' directory from the 'data' directory.  It processed the 'actfisc.txt' file ok, but when it tried the next file it errored out.  Why can't it look in the 'data' directory for the data files?


D:\AppFiles\SDS\SDS_Retail_R3\Scripts>cscript splice_years.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

start - 1/7/2013 11:25:52 AM
file actfisc.txt - 1/7/2013 11:25:52 AM
D:\AppFiles\SDS\SDS_Retail_R3\Scripts\splice_years.vbs(26, 2) Microsoft VBScript
 runtime error: File not found


D:\AppFiles\SDS\SDS_Retail_R3\Scripts>cscript splice_years.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

start - 1/7/2013 11:26:31 AM
file actfisc.txt - 1/7/2013 11:26:31 AM
file actppln.txt - 1/7/2013 11:26:55 AM
D:\AppFiles\SDS\SDS_Retail_R3\Scripts\splice_years.vbs(26, 2) Microsoft VBScript
 runtime error: File not found
elwayisgod

ASKER
I'll post this as another question.  Starting to creep into more issues.
elwayisgod

ASKER
firs one worked perfectly.  thanks.  now if I can just get it to process data files from the data directory, I'm golden :)
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
elwayisgod

ASKER
Now it's now working... I have no clue what is going on.
RobSampson

Hi, I just took a look at your Splice_Years.vbs, and noticed the first line is this:
Const C_DATA_DIR = ".\"

This is going to cause problems, since the .\ relies on the "Working directory" of the script engine at the time, hence sometimes it will work, and sometimes not.  If the script is in the same Data folder all the time, try this:
Const C_DATA_DIR = Replace(WScript.ScriptFullName, WScript.ScriptName, "")

Which will set the data dir to the current directory the script is running from, no matter where you put it.

Regards,

Rob.
RobSampson

Similarly, when launching Splice_Years.vbs from the first script, if they're always in the same folder, instead of this:
intErr = objShell.Run("cscript.exe ""D:\AppFiles\SDS\SDS_Retail_R3\Scripts\splice_years.vbs""", 0, False)

Open in new window


you can use
intErr = objShell.Run("cscript.exe """ & Replace(WScript.ScriptFullName, WScript.ScriptName, "") & "splice_years.vbs""", 0, False)

Open in new window


Rob.
Experts Exchange is like having an extremely knowledgeable team sitting and waiting for your call. Couldn't do my job half as well as I do without it!
James Murphy