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


19

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

DIR *.txt 

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

回答:


26

DIRは、あなたがやろうとしていることを許可しません。ただし、DIRとFINDSTRでこれを解決できます。

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

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

1
ヘッダーを出力し、誤ったファイルとフォルダーの可能性が最後にカウントされるdir /b | findstr /v /i "\.txt$"ため、使用することをお勧めしますdir
-phuclv

なぜfindstrちょうどfind
ソパラホデアリエレス

テキストとfindstrの検索は正規表現をサポートしているため、Findstrをお勧めします。正確な文字列を検索したいだけなら、findもうまく機能します。
IUnknown

8
dir /B | find /V ".txt"

これにより、すべてのファイルが一覧表示され、「。txt」を含まないものはすべて検索で除外されます。完璧にはほど遠いですが、それで十分かもしれません:)


/B私は言う必要はありませんが、「findstr」(実際に受け入れられたもの)の必要性が見当たらない限り、この答えを好みます。
ソパラホデアリエレス

3

コマンドインタープリターに依存します。

Microsoftにcmdはそのような機能はありません。他の回答からわかるように、の出力を後処理する必要がありますdirJP SoftwareのTCC / LEは対応しています。これはファイル除外範囲と呼ばれ、質問の例では次のように使用されます。

dir /[!*.exe] *


ありがとうございますが、このツールはスタンドアロンプ​​ログラムとして実行されると思います。私は、ubuntuでWindowsシェルまたはbashを使用して外部プロセスを実行するアプリケーションを作成しているため、このツールは適合しません。cmdラインスイッチを提供する場合は便利です。
ジョニデップ

1
前述のこと、明らかにコマンドラインスイッチです。ハイパーリンクされたドキュメントを読んでください。もちろん、ほとんどのプログラミング言語では、ディレクトリの内容取得するためにシェルを使用する長さに行くのはかなり愚かであり、アプリケーションを書くために間違ったStackExchangeを使用しています。
JdeBP

説明のおかげで、それは本当ですが、昇格を必要とするディレクトリをスキャンするための回避策であり、より高い特権を必要とせずにcmdプロンプトから結果を得ることができる場合、コードでUACプロンプトをトリガーしたくないです。
ジョニデップ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.