Змініть поточний каталог на каталог пакетних файлів


18

У мене є batфайл у Windows, який виконує операцію скидання . Проблема пакетного файлу полягає в тому, що мені потрібно перейти до каталогу пакетних файлів спочатку перед виконанням завдання, інакше сценарій не працюватиме.

Як змінити поточний каталог файлових файлів?

Я спробував такий код у своєму 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

Я залишив би коментар до відповіді fretje, але очевидно, я не можу ???


У всякому разі, щодо примітки:
Але зауважте, що це все одно не дасть вам правильної поведінки, коли ви намагаєтеся виконати свою партію, поки поточний каталог знаходиться на іншому диску, оскільки CD не змінює активний диск.


Використовуйте /Dперемикач у команді CD, і CD змінить активний диск.


... все ж я можу прокоментувати власну відповідь. Людина, смокче не мати представника на ServerFault ... бажаю, щоб сюди ще й "повторився".
Yoopergeek

1
@Yoopergeek: ви можете пов’язати свої облікові записи. Це дасть вам 100 повторень тут, якщо ваш показник на SO вище 200.
fretje
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.