Як змінити поточний робочий каталог за допомогою пакетного файлу


110

Мені потрібна допомога в написанні пакетного файлу. У мене збережений шлях у змінному корені наступним чином:

set root=D:\Work\Root

Потім я змінюю свою робочу директорію на цей корінь наступним чином:

cd %root%

Коли я виконую цей пакетний файл з будь-якої точки диска D, це робиться успішно. Але коли я виконую той самий пакетний файл з іншого диска, cd% root% не працює.

Чи є спосіб я отримати літеру диска з кореневої змінної? Тоді я можу спочатку змінити поточний каталог на цьому диску, а потім cd% root% запрацює.

Відповіді:


160

Вкажіть, /Dщоб також змінити привід.

CD /D %root%

1
Інші відповіді кажуть \d(малі), чи є різниця між обома? Чи є варіант просто нечутливим до регістру?
Джош

3
@josch: Так, якщо ми говоримо про внутрішні команди CMD, то параметри перемикання, як /Dописано вище, не залежать від регістру ( /D= /d), як і самі команди ( CD= cd). Я вважаю, що це справедливо і для всіх зовнішніх утиліт командного рядка Windows (наприклад FINDSTR, SORTтощо). Сторонні інструменти, з іншого боку, можуть використовувати параметри, що залежать від регістру.
Андрій М

не варто власної відповіді, але можна set "root=/d D:\Work\Root"і cd %root%навіть set "root=cd /d D:\Work\Root"і навіть просто%root%
Стефан

40

Просто використовуйте cd /d %root%для перемикання літер драйверів та зміни каталогів.

Крім того, використовуйте pushd %root%для перемикання літер диска при зміні каталогів, а також зберігання попереднього каталогу у стеку, щоб ви могли використовувати popdдля перемикання назад.

Зверніть увагу, що pushdтакож дозволить вам змінювати каталоги на загальну мережу. Він насправді буде відображати мережевий диск для вас, а потім зніміть його під час виконання popdкаталогу для цього каталогу.


29

Спробуйте це

chdir /d D:\Work\Root

Насолоджуйтесь вкорінення;)


6
Укорінення? Що це означає навіть у цьому контексті?
Mathias Lykkegaard Lorenzen

Слід зазначити, що до і після каталогу "слід ставити так; chdir / d" D: \ Work \ Root "
Ad Infinitum

12

Більш простим може бути синтаксис

pushd% root%


3
Нічого собі, з усіх рішень найнижчий рейтинг - це той, хто насправді працював як шарм! Дякую!
Арто Калішян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.