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


39

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

在linux中通常使用

cd -

用于先前的目录导航。

Answers:


27

将以下内容保存到例如。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%
)

然后,请始终记住使用mycd而不是cd更改目录和驱动器。

或者,使用doskey宏:

C:\>doskey cd=mycd $*

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


看起来它不应该工作,但是可以。OLDPWD设置正确。
休·艾伦

2
+1这很不错,很有效!但是使用mycd(或whtevr)很痛苦
ukanth 2010年

@HughAllen可以为cd \和cd创建一个doskey宏。doskey cd \ = cd \或doskey cd \ = c:\ mycd.bat \ doskey C:= c:\ mycd.bat C:
barlop

该bat对于c:\ blah.bat%USERPROFILE%将失败(因此cd或cdd%USERPROFILE%将失败)。要解决此问题,请将单引号更改为双引号。
barlop 2011年

39

您可以使用push和popd:

C:\ WINDOWS>推入\
C:\>弹出
C:\ WINDOWS>

约翰·Thx,但这不是我想要的。
2010年

2
正是我想要的批处理脚本,谢谢。它甚至不需要\ d开关即可更改驱动器
Deebster 2012年

2
警告:随着pushd/popd必须体谅错误的可能性。在脚本中,当pushd目录不存在时,它将不会在堆栈中完成,但是当您popd退出一个级别时:变量未正确填充,missprint,错误的驱动器...您认为位于不同的目录中从您所在的位置开始,出现严重问题,例如删除文件/目录时。灾难(Linux语法):cd $HOME; mkdir A; pushd A; mkdir B; pushd D; do stuff (in A, you believe in B); popd; rm -rf * 您相信A,但是……太晚了,所有主目录都消失了。
Hastur

4

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

  cd /D  %~dp0

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


4

如果您想要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                             
$ 


1

根据您的目标,您可以通过执行“ cmd”,移动目录并执行所需的任何操作来启动新的cmd会话,然后再执行“退出”以离开该会话,您将回到原来的目录中。您开始了新的会话。



0

我要做的是

rem capture the path of the initial dir
set RET_DIR=%CD%
rem do stuff...
rem and then return to the initial dir
cd %RET_DIR%
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.