Как изменить текущий рабочий каталог с помощью командного файла


110

Мне нужна помощь в написании командного файла. У меня есть путь, хранящийся в переменной root следующим образом:

set root=D:\Work\Root

Затем я меняю свой рабочий каталог на этот корень следующим образом:

cd %root%

Когда я запускаю этот командный файл из любого места на диске D, это выполняется успешно. Но когда я выполняю тот же командный файл с другого диска, cd% root% не работает.

Есть ли способ получить букву диска из корневой переменной? Затем я могу сначала изменить текущий каталог на этот диск, и тогда cd% root% будет работать.

Ответы:


161

Укажите также, /Dчтобы сменить привод.

CD /D %root%

1
В других ответах говорится \d(в нижнем регистре) есть ли разница между ними? Параметр просто нечувствителен к регистру?
josch

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
Укоренение? Что это вообще значит в данном контексте?
Матиас Ликкегор Лоренцен

Следует отметить, что до и после каталога "следует указывать так: chdir / d" D: \ Work \ Root "
Ad Infinitum

12

Более простой синтаксис мог бы быть

pushd% root%


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