call batch file and run using its own path/directory
I have a batch files that calls other batch files like this:
e:\foo\master.bat
has the content:
call e:\bar\run1.bat
and e:\bar\run1.bat
has the content
app1.exe
the problem is that when I run the master.bat
app1.exe
will not be executed, because it will expect it to be in the e:\foo
directory instead of it being in e:\bar
directory
Solution 1:
You are a bit unclear where app1.exe is located.
If it shares the folder with run1.bat change run1.bat
to either
@Echo off
Pushd "%~dp0"
app1.exe
popd
or
@Echo off
"%~dp0app1.exe"
%0
refers to the currently running batch and the modifier ~dp
returns drive and path (with a trailing backslash.)
Solution 2:
The answer to your question can be drawn from a similar question on Stack Overflow.
What is the current directory in a batch file?
Using the variables mentioned here, you can update run1.bat to call app1.exe with the following line: %~dp0app1.exe
. (The %~dp0 variable includes a trailing slash.) This will tell the batch file to run the executable from the current batch file's location.