数字のコマンドプロンプトワイルドカード?


1

コマンドプロンプトの数字にワイルドカードはありますか?

例えば、

dir *.1*

拡張子が1で始まるすべてのファイルをリストします。


MS-DOSを意味しますか?私の知る限り、MS-DOSは?でなくワイルドカード文字として使用されているため*です。おそらく、代わりにWindowsコマンドプロンプト(cmd.exe)を意味しますか?
インドレック

3
MS-DOSは両方をサポートしますか?(単一文字置換の場合)および*(複数文字置換の場合)。
MK

回答:


2

いいえ、MS-DOSは2つのワイルドカード文字(CP / Mに基づく)のみをサポートします。これらは、文字のシーケンスを示す「*」と、単一の文字を示す「?」です。ワイルドカードにはアルファベットと数字の区別はありません。また、ワイルドカードを数字に制限する正規表現のサポートはありません。


3

あなたの文字通りの質問への答えは「いいえ」です-しかし、あなたの本当の質問が:

cmdの下で名前に数字を含むファイルのみを何らかの方法で選択できますか?

それがntベースのものであれば(より具体的にはW2k plus)、はいできます。トリックはfindstr、単純な正規表現をサポートするを使用して、結果を除外することです。例の場合と
dir /b |findstr /r "\.[0-9]"同様の結果が得られますdir。これは、file.1st.second(dirが返すように)戻ることも意味します。
ここでの小さな問題は、ファイル名のみがリストされることですが、それでも解決でき
for /f %F in ('dir /b ^|findstr /r "\.[0-9]"') do @echo %~ftzaFます。リストを適切にフォーマットされたdirスタイルで印刷します。現在のディレクトリで実行する必要があることに注意してください!

OR私が推薦する
あなたが持っている場合はpowershell利用可能(またはあなたがそれをインストールして喜んでいる)、それを起動とexec:
gi .\* |? {$_.name -match "\.[0-9]"}

OPコメントに従って編集

これは 、以下を使用してファイルを列挙しますfor /r
最も単純ですがfindstr、すべての行で実行されるため、非常に低速です(いくつかのファイル以外はほとんど使用できません)。

for /r "c:\temp" %F in (*) do @echo %~nxF | findstr /r "\.[0-9]" && echo %F

より複雑ですが、高速です(特別に準備された文字列を使用して、次の単一インスタンスへのパイプを許可しますfindstr

for /f "tokens=2 delims=* eol=*" %F in ('^(for /r "directory_root" %F in ^(*^) do @echo %~nxF*%~dpnxF^) ^|findstr /r "\.[0-9].*\*"') do @echo %F 

または(機能的には同じですが、読みやすいです:>)

(for /r "directory_root" %F in (*) do @echo %~nxF*%~dpnxF) | for /f "tokens=2 delims=* eol=*" %F in ('findstr /r "\.[0-9].*\*"') do @echo %F

コマンドラインから直接実行されるすべての例


まあ、私は特にディレクトリを使用していません。実際にファイルをループする必要がありますfor /r
アーカイブ

@Archivalまだ適用可能です。私の編集を参照してください。
wmz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.