I need to run a batch file located in another folder that must be called from another batch file.

Whenever I do call this batch file from the first, let's call them Batch_A and Batch_B, respectively, the second tries to run from the directory of the first batch file.

Batch_A needs to call or start Batch_B, however Batch_B needs to run as if I were to manually double-click it myself.

This is what I currently have at the end of my first batch

start "A thing" "%output%\thing.bat" /b

有帮助吗?

解决方案

Have you looked into push or pop.

Before calling the second batch file, enter the "push" command:

pushd %dynamicdirectory%
Call batchfileb.bat
popd

其他提示

If Batch_B is designed/written to be always run from the direcory where it is located you might also consider to modify Batch_B.bat

setlocal
cd /D %0\..

REM your original content

endlocal

In %0 the path to the batchfile is stored.

The trick is to assume %0 is a directory then to change one level lower based on that diretory. With /D also the drive letter is changed correctly.

The cd command doesn't care if %0 is really a directory. In fact %d doesn't even have to exist (%0\dummy\..\.. would also work).

The setlocal command is to have the working directory beeing restored when Batch_B.bat has finished.

I noticed that the endlocal command is not really necessary in this context since it is applied imlicitely when Batch_B finishes.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top