%CD%
- неправильный способ сделать это, поскольку он указывает каталог, в котором пользователь находился при вызове скрипта, а не каталог, в котором находится скрипт.
Вместо этого используйте %~dp0
для извлечения информации о диске и пути из %0
:
REM C:\Program Files\test_caller.bat
@echo I am the caller and I reside in: "%~dp0"
@"%~dp0\test.bat"
...
REM C:\Program Files\test.bat
@echo Yippeee!
...
C:\>"\Program Files\test_caller.bat"
I am the caller and I reside in: "C:\Program Files\"
Yippeee!
C:\>e:
E:\>"C:\Program Files\test_caller.bat"
I am the caller and I reside in: "C:\Program Files\"
Yippeee!