在Windows中列出目录堆栈

Phu*_*hib 2 windows batch-file

我试图使用以下命令列出已添加到目录堆栈的目录: pushd

我找不到任何关于如何打印目录堆栈内容的引用或命令.

任何帮助表示赞赏

Ste*_*han 5

好挑战.如前所述,似乎没有内置的方法来获取该信息,因此您需要一个脚本来逐步执行此操作:

@echo off
setlocal enabledelayedexpansion
set origin=%cd%

rem build a demo stack:
pushd c:\
pushd windows
pushd help
pushd windows
pushd en-us

rem get stack step by step:
set i=0
:loop
  popd && (
    set /a i+=1
    echo !i! --- %cd%
    set "p[!i!]=%cd%"
   ) || (
    goto :TopOfStack
   ) 
goto :loop

:TopOfStack
echo stack empty.
cd %origin%
rem restore stack:
set p[
for /l %%i in (%i%,-1,1) do (
  pushd "!p[%%i]!"
)
Run Code Online (Sandbox Code Playgroud)

注意:请参阅jeb的回答.


jeb*_*jeb 5

pushd不带参数输出堆叠的目录列表.

pushd c:\
pushd windows
pushd help
pushd windows
pushd en-us

pushd
Run Code Online (Sandbox Code Playgroud)

会输出

c:\ Windows\Help\Windows
c:\ Windows\Help
c:\ Windows
c:\
c:\ Temp

这里缺少最新的推送目录,但可以简单地检索%__CD__%.

还有一个目录(在我的例子中C:\temp),因为它将是最后一次执行后的目录popd.