call batch file and run using its own path/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.