マクロ名のリスト(1行に1つ)を含むテキストファイルがあります。私の最終的な目標は、現在のディレクトリのファイルにマクロの名前が何回表示されるかを印刷することです。
マクロの名前はC:\temp\macros.txt
にあります。
コマンドプロンプトのtype C:\temp\macros.txt
は、リストを正常に出力します。
次に、その出力をfindstr
の標準入力にパイプします。
type C:\temp\macros.txt | findstr *.ss
(ssは、マクロ名を探しているファイルタイプです)。
これは機能していないようです。結果は得られません(非常に高速で、まったく試行されていないようです)。 findstr <the first row of the macro list> *.ss
は機能します。
findstr *.ss < c:\temp\macros.txt
も試しましたが成功しませんでした。
findstr
がどのように機能するか少し混乱していると思います。ファイル名(パターン)またはstdinから入力(検索するものではなく、検索するもの)を取得しますが、検索するものは常にコマンドラインで指定されますfindstr
への引数として。
findstr foo xyz.txt
ファイルxyz.txt
で文字列foo
を検索します。
type meh.txt | findstr x
前のコマンドの出力で文字列x
を見つけます(この場合、ファイルmeh.txt
の内容– type
コマンドの無駄で、よくある誤用によく似ています。 cat
)。
マクロ名が表示される実際の行の代わりにcountsを使用しているので、別のアプローチをお勧めします。これは、マクロを含むファイルに1行に1つずつリストされていることを前提としています。
for /f "delims=" %x in (macros.txt) do @(echo %x: & find /c "%x" *.ss)
for
ループは、ファイルの内容を行ごとに繰り返し処理します。次に、検索している名前を出力し、実際に一致する行をカウントするfind /c
を実行します。