Windows のコマンドラインで DIR コマンドを使用して特定の拡張子のファイルを除外する

Windows のコマンドラインで DIR コマンドを使用して特定の拡張子のファイルを除外する

たとえば、特定の拡張子のファイルのみを dir リストを使用して表示したい場合は、次のコマンドを使用します。

DIR *.txt 

そして、拡張子を持つすべてのファイルが表示されます.txt
特定の拡張子を除外できるコマンドがあるかどうかを知りたいです。
たとえば、拡張子を持つファイルを表示したくないのですが.exe、どうすればいいですか?

答え1

DIR では、実行しようとしている操作は実行できません。ただし、DIR と FINDSTR を併用すると、この問題を解決できます。

たとえば、次の例では、DIR リスト内のすべての .txt ファイルを無視します。

dir | findstr /v /i "\.txt$" 

答え2

dir /B | find /V ".txt"

これにより、すべてのファイルがリストされ、「.txt」を含まないものはすべて除外されます。完璧とは程遠いですが、これで十分でしょう :)

答え3

コマンドインタープリターによって異なります。

他の回答からもわかるように、 Microsoftにはcmdそのような機能はありません。出力を後処理する必要がありますdir。しかし、JPソフトウェアのTCC/LEこの機能があります。これはファイル除外範囲質問の例では次のように使用されています:

dir /[!*.exe] *

答え4

このためには、 を使用してマクロを定義しますDOSKEY。ディレクトリを除外し、大文字と小文字は無視しました。結果は人によって異なります。また、フィルタリングには が最も合理的なオプション/Bのようですが、タスクには不適切であり、長い形式(デフォルト) と、場合によってはファイル名の後に追加のテキスト (シンボリックリンク用) が含まれます。コマンド ラインで確認します。DIR/D/W/N/X

DOSKEY  FIR=DIR/B/A-D^|FINDSTR /VIE $*
DOSKEY FLIR=DIR/X/A-D^|FINDSTR /VIE $*

FIRのためにフィルタリング DIRわかりますか? :)FLIR長いバージョンが必要な場合は、次のように使用します。

fir .jpg
flir jpg
fir "jpg htm"

後者は、FINDSTRで説明されているように、引数として指定されたパターンを が読み取る方法によるものです/?。最初の引数のみがパターンとして扱われ、追加の引数はパイプで実行されている場合でもファイル名として解釈されます。

私はFINDSTRplain よりもこれを好みます。なぜなら、行末のみをフィルタリングするFINDファンキーなスイッチがあり、ファイル拡張子でフィルタリングするときに好ましいと思われるからです (ただし、これも YMMV です)。/E

便利なSS64 サイト永続的に再利用するためにファイル内のマクロを設定する方法について説明しますTXT。テキスト ファイルに保存されたマクロでは、特殊文字をエスケープするためのキャレットが使用されないことに注意してください^

マクロ(「コンソールエイリアス」)が内部でどのように動作するかの基本を理解するには、以下をお読みください。Eryk Sun の SO に関する短いコメント

関連情報