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

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
Ух ты, из всех решений самый низкий рейтинг у того, который действительно сработал как шарм! Спасибо!
Арто Калишян