Изменить текущий каталог на каталог пакетных файлов


18

У меня есть batфайл на окнах, которые выполняют операцию procdump . Проблема с командным файлом заключается в том, что мне нужно сначала перейти в каталог командного файла перед выполнением задания, иначе сценарий не будет работать.

Как перейти в текущий каталог с пакетными файлами?

Я попробовал следующий код в моем procdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

Но это не удалось, сообщение об ошибке:

Следующее использование оператора пути в подстановке пакетных параметров недопустимо:% ~ dp "

Для допустимых форматов введите CALL /? или ЗА /?

Редактировать: предоставленный ответ работает, но есть только одна загвоздка: если мой текущий каталог отличается от каталога пакетного файла, то я получу «Система не может найти указанный путь». У кого-нибудь есть идеи?


Откуда у вас этот "% ~ dp"?
— fretje

Ответы:


24

Хорошо, я думаю, что нашел здесь то, что вы имеете в виду %~dp.

Я думаю, что вы действительно хотите сделать, это:

cd /D "%~dp0"

(!) Но учтите, что это все равно не даст вам правильного поведения, когда вы пытаетесь выполнить свой пакет, пока текущий каталог находится на другом диске, поскольку cdэто не меняет активный диск.

Редактировать : Очевидно (спасибо @Yoopergeek ) вы можете добавить /Dпараметр в cdкоманду, чтобы позволить ему также изменить активный диск.


Для получения более подробной информации об этих пакетных параметрах см help callв cmdстроке.
— Приостановлено до дальнейшего уведомления.

Кстати, вы можете объединить эти параметры следующим образом:%~dp0
— Приостановлено до дальнейшего уведомления.

Ваш ответ полезен; но если мой текущий каталог находится в другом каталоге, чем командный файл, то приведенная выше команда не будет выполнена; даже cd /Dили cd "%~dp0" /Dне могу помочь.
— Гравитон

@Ngu Скоро Хуэй: То, что ваш текущий каталог находится в другом каталоге, чем командный файл, было очевидно. Но почему эта команда потерпит неудачу? Я проверил это здесь, и это работает.
— fretje

1
Я нашел решение с помощью cd /D "%~dp0". Благодарю.
— Гравитон

4

Я бы оставил комментарий к ответу Фретье, но, очевидно, я не могу ???


В любом случае, что касается примечания:
Но учтите, что это все равно не даст вам правильного поведения, когда вы пытаетесь выполнить пакет, когда текущий каталог находится на другом диске, так как cd не меняет активный диск.


Используйте /Dпереключатель в вашей команде CD, и CD изменит активный привод.


... все же я могу прокомментировать свой собственный ответ. Чувак, отстой, что у меня нет повторений на ServerFault ... Желаю, чтобы некоторые SO повторяли это.
— Yoopergeek

1
@Yoopergeek: вы можете связать свои учетные записи. Это даст вам 100 повторений здесь, если ваш повтор на SO выше 200.
— fretje
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.