Подтвердить что ты не робот

Получить текущий каталог пакетных файлов

Во-первых, я видел этот раздел, но я не мог этого понять.

Вопрос:

В D:\path\to\file.bat имеется пакетный файл со следующим содержимым:

echo %cd%
pause

Выход:

C:\

Это должно быть D:\path\to

Что я делаю неправильно?

4b9b3361

Ответ 1

Переменная %CD% только для чтения сохраняется путь к вызывающему абоненту пакета, а не к пакетному файлу.

Вы можете получить имя самого пакета script как введенного пользователем с помощью %0 (например, scripts\mybatch.bat). Для этого могут применяться расширения параметров, поэтому %~dp0 вернет диск и путь к пакету script (например, W:\scripts\) и %~f0 вернет полное имя пути (например, W:\scripts\mybatch.cmd).

Вы можете ссылаться на другие файлы в той же папке, что и пакет script, используя этот синтаксис:

CALL %0\..\SecondBatch.cmd

Это может быть даже использовано в подпрограмме, Echo %0 даст метку вызова, но echo "%~nx0" даст вам имя файла пакета script.

Когда переменная %0 расширяется, результат заключен в кавычки.

Подробнее о параметрах партии.

Ответ 2

Очень просто:

setlocal
cd /d %~dp0
File.exe

Ответ 3

Внутри вашего .bat файла:

set mypath=%cd%

Теперь вы можете использовать переменную %mypath% для ссылки на путь к файлу .bat. Чтобы проверить правильность пути:

@echo %mypath%

Например, файл с именем DIR.bat со следующим содержимым

set mypath=%cd%
@echo %mypath%
Pause

запускаемый из каталога g:\test\bat, будет отображать этот путь в командном окне DOS.