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

Ana*_*nya 98 directory batch-file drive command-prompt

我需要一些帮助来编写批处理文件.我有一个存储在变量root中的路径,如下所示:

set root=D:\Work\Root
Run Code Online (Sandbox Code Playgroud)

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

cd %root%
Run Code Online (Sandbox Code Playgroud)

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

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

And*_*y M 150

指定/D也更改驱动器.

CD /D %root%
Run Code Online (Sandbox Code Playgroud)

  • @josch:是的,如果我们谈论CMD的内部命令,那么像上面的`/ D`这样的切换参数是不区分大小写的(`/ D` =`/ d`),就像命令本身一样(`CD` =` cd`).我相信所有外部Windows命令行实用程序(例如`FINDSTR`,`SORT`等)也是如此.另一方面,第三方工具可以使用区分大小写的参数. (3认同)

Gab*_*abe 39

只需cd /d %root%用来切换驱动程序字母和更改目录.

或者,用于pushd %root%在更改目录时切换驱动器号,以及将前一个目录存储在堆栈中,以便您可以使用popd切换回来.

请注意,pushd还可以将目录更改为网络共享.它实际上会为您映射网络驱动器,然后在执行该popd目录时取消映射.


sti*_*ay_ 23

试试这个

chdir /d D:\Work\Root
Run Code Online (Sandbox Code Playgroud)

享受生根;)

  • 生根?在这种情况下,这甚至意味着什么? (6认同)
  • @MathiasLykkegaardLorenzen回到root,作为问题的参考,这似乎逃脱了你 (3认同)

Nap*_*Bob 6

一个更简单的语法可能是

推送%root%

  • 哇,在所有解决方案中,排名最低的解决方案实际上非常有效!谢谢! (3认同)

rad*_*vus 6

在我的批处理文件中,我需要:

  1. 将目录更改为其他目录
  2. 在bat文件中运行命令——在该目录中做一些工作
  3. 改回我原来的目录

pushd在以下的帮助下解决了这个问题popd

bat 文件示例

pushd <my-working-directory>
do command
do other command
...

popd 
Run Code Online (Sandbox Code Playgroud)

popd将我移回原始目录。