导航到 Windows 命令提示符中的上一个目录

uka*_*nth 48 windows command-line

是否有任何命令/工具可以在 Windows 命令提示符下导航上一个目录?

在linux中通常使用

cd -
Run Code Online (Sandbox Code Playgroud)

用于以前的目录导航。

Joh*_*n T 48

您可以使用 pushd 和 popd:

C:\WINDOWS>推送\
C:\>popd
C:\WINDOWS>

  • 这正是我想要的批处理脚本,谢谢。它甚至无需 \d 开关即可更改驱动器 (2认同)
  • __警告__ 使用`pushd/popd`,你__必须考虑错误的可能性__。在脚本中,当您`pushd`一个不存在的目录时,它不会在堆栈中完成,但是当您`popd`时,您将退出一级:变量未正确填充,打印错误,驱动器错误......你认为位于与您所在的目录不同的目录中,存在严重问题,例如,当您删除文件/目录时。灾难(Linux 语法):`cd $HOME; mkdir A; 推A; mkdir B; 推D; 做事(在A中,你相信B);弹出; rm -rf * ` 你相信 A 但是...太晚了,你所有的主目录都不见了。 (2认同)

Hug*_*len 29

将以下内容保存到例如。mycd.bat在你的路径中的某个地方:

@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
    cd /d %OLDPWD%
    set OLDPWD=%cd%
) else (
    cd /d %*
    if not errorlevel 1 set OLDPWD=%cd%
)
Run Code Online (Sandbox Code Playgroud)

然后永远记住使用mycd而不是cd更改目录和驱动器。

或者,使用doskey宏:

C:\>doskey cd=mycd $*
Run Code Online (Sandbox Code Playgroud)

唯一需要注意的是,如果你省略之间的空间cd..\,你会得到的内置版本cd不是doskey宏...你还是得想不起来用C:D:等来改变驱动器。

  • +1 这很好,它有效!但使用 mycd (或 whtevr )很痛苦 (2认同)

小智 5

如果您正在运行批处理文件,则可以使用

  cd /D  %~dp0
Run Code Online (Sandbox Code Playgroud)

这将跳回到运行批处理文件的原始路径


Hug*_*len 5

如果您想要 bash 的确切行为,为什么不使用 bash?我已经安装了cygwin,它非常好。它不会让你坚持使用它的 UNIX 工具——它会很高兴地调用任何 Windows 可执行文件。对于cmd.exe内置函数,您可以创建别名:

hugh@comp07 ~/testdir                             
$ alias cm='cmd /c'                               

hugh@comp07 ~/testdir                             
$ cm dir                                          
 Volume in drive C has no label.                  
 Volume Serial Number is AC2A-8378                

 Directory of C:\cygwin\home\hugh\testdir         

18/05/2010  02:02 PM    <DIR>          .          
18/05/2010  02:02 PM    <DIR>          ..         
               0 File(s)              0 bytes     
               2 Dir(s)   1,365,155,840 bytes free

hugh@comp07 ~/testdir                             
$ 
Run Code Online (Sandbox Code Playgroud)