この特定のコマンドに配置する変数がたくさんあります。コマンドを書き直さずに多くの変数を追加する方法はありますか?
dir c:\ /s /b /a | 「私のファイル」を見つける
たとえば、「my file」とその他 50 個のファイルを検索したいとします。
答えてくれてありがとう
この特定のコマンドに配置する変数がたくさんあります。コマンドを書き直さずに多くの変数を追加する方法はありますか?
dir c:\ /s /b /a | 「私のファイル」を見つける
たとえば、「my file」とその他 50 個のファイルを検索したいとします。
答えてくれてありがとう
要するに:いいえ。特定のコマンドが実際に複数のパラメーター(変数の場合もある)を受け入れない限り、コマンドを書き直す必要があります。あなたの場合はそうではないので、書き直す必要があります。
1つのオプションは、findstr
の代わりに使用することですfind
。複数の検索パターンを渡すことができます。
dir c:\ /s /b /a | findstr /c:"my file" /c:"other" /c:"other 2" ...
それが「他の50のこと」にどれほどうまく対応できるかはわかりませんが、そのような解決策はないかもしれません。正規表現を使用してファイル名をビューに凝縮できるかもしれません(チェックfindstr /?
)。
簡単に行うこともできます。
for /R c:\ %i in ("my file" "other" "other2") do @echo %i
ただし、どちらのソリューションにも重複のオプションがあります。それらは本質的に「含む」セマンティクスに基づいて検索します。したがって、「C:\ foo \ myfile」と「C:\ foo \ bar \ myfile\something.txt」の両方が一致します。しかし、元のソリューションにもその問題がありました。
検索パターンを一意にすることができるか、誤検知が発生する可能性がある場合は、それが問題になることはありません。ただし、それでも注意してください。
FIND の代わりに FINDSTR を使用するという Christian の提案の拡張 - テキスト ファイルに 50 個すべての検索用語を入れて、/G:"filename"
オプションを使用してそれらを参照するだけです。
ただし、重要な注意点が 1 つあります。複数のリテラル文字列を検索する場合、FINDSTR に厄介なバグがあります。複数のリテラル検索文字列を使用した FINDSTR の例で一致が見つからないのはなぜですか?を参照してください。.
リンクで説明されているように、回避策は、オプションを使用して大文字と小文字を区別しない検索を行うか、/I
オプションで正規表現検索用語を使用する/R
ことです。
文書化されていない FINDSTR 機能とバグの "完全な" リストについては、Windows FINDSTR コマンドの文書化されていない機能と制限とは何ですか? を参照してください。.
for ループでラップできます。
for %i in ("my file" "second file") do dir c:\ /s /b /a | find %i