文書化されていませんが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%
しかし、これはコマンドラインからの使用には不便です。