如何使用批处理文件更改当前工作目录


110

在编写批处理文件时,我需要一些帮助。我将路径存储在变量根中,如下所示:

set root=D:\Work\Root

然后我将工作目录更改为该根目录,如下所示:

cd %root%

当我从D驱动器上的任何位置执行此批处理文件时,此操作成功完成。但是,当我从其他驱动器执行相同的批处理文件时,cd%root%不起作用。

有没有办法可以从根变量获取驱动器号?然后,我可以先将当前目录更改为此驱动器,然后cd%root%可以工作。

Answers:


160

指定还/D可以更改驱动器。

CD /D %root%

1
其他答案说\d(小写)两者之间有区别吗?该选项是否不区分大小写?
josch

3
@josch:是的,如果我们在谈论CMD的内部命令,则/D上面的switch参数不区分大小写(/D= /d),就像命令本身(CD= cd)一样。我相信也是所有外部的Windows命令行实用程序(如属实FINDSTRSORT等等)的第三方工具,在另一方面,可以使用区分大小写的参数。
Andriy M,

不值得了自己的答案,但你可以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对该目录执行时取消映射。



12

一个更简单的语法可能是

推送%root%


3
哇,在所有解决方案中,排名最低的实际上是一种魅力!谢谢!
Arto Kalishian
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.