テキストファイルがあり、テキストファイル全体を読み取り、文字列「PASS」の出現回数を通知するバッチファイルを実行したいと思います。
それを行う方法を教えてもらえますか?BATファイルでのトークンの使用法を理解できません。
テキストファイルがあり、テキストファイル全体を読み取り、文字列「PASS」の出現回数を通知するバッチファイルを実行したいと思います。
それを行う方法を教えてもらえますか?BATファイルでのトークンの使用法を理解できません。
たぶん、findstr
コマンドはあなたを助けるでしょう:FindstrHelp。発生数は出力されませんが、結果を使用して何かできる可能性があります。
更新:Findコマンドには、/c
その文字列を含む行数をカウントするオプションがあります。
マルモスの答えは良いです、そして通常それはあなたの問題を解決するはずです。
しかし、あなたはトークンを理解していないので、私はそれを説明しようとします。
コマンドでファイルの内容を読み取ることができますFOR/F
。
はFOR/F
ファイルを1行ずつ読み取り、空の各行はスキップされます。また、EOL文字で始まるすべての行(デフォルトは;
)です。
デフォルトごとに使用しますtokens=1 delims=<TAB><SPACE> EOL=;
。
この場合、行の終わりまで、または最初のSPACE
またはまで、常に1つのトークンを取得しますTAB
。
for /F "tokens=1" %%a in (myFile.txt) do (
echo token1=%%a
)
さらにトークンを読みたい場合は、それを定義する必要があります。
for /F "tokens=1,2,3,4" %%a in (myFile.txt) do (
echo token1=%%a token2=%%b token3=%%c token4=%%d
)
これで、行の区切り文字が少ない場合、行は区切り文字(SPACEまたはTAB)で4つのトークンに分割され、トークンは空になります。
複数のトークンが必要ない場合、または特定のトークンの後に行の残りの部分を使用することができます*
。
for / F "tokens = 1,2,3,4 *" %% a in(myFile.txt)do(echo token1 = %% a token2 = %% b token3 = %% c token4 = %% d)
これで、token4には4番目のトークンと残りの行が含まれます。
for /F "tokens=1*" %%a in (myFile.txt) do (
echo token1=%%a token2=%%b token3=%%c token4=%%d
)
この場合、1つのトークンのみが存在し(%%a
)、他のトークン(%%b
%%c
%%d
)は有効なトークンではなく、テキストtoken2=%b token3=%c token4=%d
がエコーされます。
delimを使用して、すべてを1つのトークンに減らすこともできます。for / F "delims =" %% a in(myFile.txt)do(echo complete line = %% a)
行をより多くのトークンに分割するための文字が残っていないため、トークンは1つしか存在しないため、これは機能します。