0

この特定のコマンドに配置する変数がたくさんあります。コマンドを書き直さずに多くの変数を追加する方法はありますか?

dir c:\ /s /b /a | 「私のファイル」を見つける

たとえば、「my file」とその他 50 個のファイルを検索したいとします。

答えてくれてありがとう

4

3 に答える 3

2

要するに:いいえ。特定のコマンドが実際に複数のパラメーター(変数の場合もある)を受け入れない限り、コマンドを書き直す必要があります。あなたの場合はそうではないので、書き直す必要があります。

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」の両方が一致します。しかし、元のソリューションにもその問題がありました。

検索パターンを一意にすることができるか、誤検知が発生する可能性がある場合は、それが問題になることはありません。ただし、それでも注意してください。

于 2012-07-17T04:22:51.110 に答える
2

FIND の代わりに FINDSTR を使用するという Christian の提案の拡張 - テキスト ファイルに 50 個すべての検索用語を入れて、/G:"filename"オプションを使用してそれらを参照するだけです。

ただし、重要な注意点が 1 つあります。複数のリテラル文字列を検索する場合、FINDSTR に厄介なバグがあります。複数のリテラル検索文字列を使用した FINDSTR の例で一致が見つからないのはなぜですか?を参照してください。.

リンクで説明されているように、回避策は、オプションを使用して大文字と小文字を区別しない検索を行うか、/Iオプションで正規表現検索用語を使用する/Rことです。

文書化されていない FINDSTR 機能とバグの "完全な" リストについては、Windows FINDSTR コマンドの文書化されていない機能と制限とは何ですか? を参照してください。.

于 2012-07-17T15:43:13.780 に答える
0

for ループでラップできます。

for %i in ("my file" "second file") do dir c:\ /s /b /a | find %i
于 2012-07-17T02:50:17.903 に答える