尽管没有记录pushd
接受通配符(打开命令扩展时)。但不能像我预期的那样工作,而且似乎有问题。当传递通配符表达式时,pushd 会按字母顺序获取所有应用该模式的文件(!)和文件夹,并尝试输入列表中的第一项 - 而不检查它是文件夹还是文件:
C:>break>a1
C:>md a2
C:>pushd "a*"
The directory name is invalid.
C:>md b1
C:>pushd "b>"
C:\b1>
有没有办法强制pushd
进入第一个类似于传递通配符表达式的目录b*\
。喜欢或b*\nul
不工作的东西。看起来唯一的方法是使用DIR
命令列出目录,获取第一个目录,然后将其传递给pushd
:
@echo off
set "mask=b?"
for /f "tokens=*" %%# in ('dir /b /a:d /o:-n "%mask%"') do @set the_dir=%%#
pushd %the_dir%
但这看起来不方便从命令行使用。