Windows 有没有办法解决这个pushd错误?

Windows 有没有办法解决这个pushd错误?,windows,batch-file,cmd,pushd,Windows,Batch File,Cmd,Pushd,尽管没有文档记录,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仍接受通配符(当打开命令扩展时)。但并不像我预期的那样有效,而且似乎有问题。传递表达式时,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%

但是,从命令行使用它看起来并不方便。

很有趣!我刚刚测试了
cd
命令,它的工作原理与此相同。没有办法“排序”名称,因此文件夹名称优先于文件名,但是如果您的所有文件夹都没有扩展名,而您的所有文件都有扩展名,那么您可以使用未记录的“我非常确定这一点”功能“这是偶然的。我怀疑有没有办法让它按你想要的方式工作。这一功能深入到cmd.exe的解析核心,MSFT不想进入遗留代码来修复类似的问题。不支持通配符。您本质上是在问,如何在其规范之外使用命令。答案是简单的:不要。“IcTestTab-最强大的批处理技术使用的东西不包括MS文档(你可以把它们看作‘黑客’)。我不明白为什么不能滥用
pushd
,如果它有用的话。我:“医生,当我使用pushd的通配符时会很痛。”医生:“不要这样做。”世界其他地方:“不要使用批处理文件!使用任何真正的编程语言”。我们批处理文件冒险家:“你不知道你正在失去的巨大乐趣是从任何其他更好定义的语言中永远得不到的;例如:,动画游戏,如,和长等等,再加上所有未来的发现”。我不是来测试
CD
。“好主意”
break > a1.txt
md a2
pushd "a<"