2

テキストファイルがあり、テキストファイル全体を読み取り、文字列「PASS」の出現回数を通知するバッチファイルを実行したいと思います。

それを行う方法を教えてもらえますか?BATファイルでのトークンの使用法を理解できません。

4

2 に答える 2

4

たぶん、findstrコマンドはあなたを助けるでしょう:FindstrHelp。発生数は出力されませんが、結果を使用して何かできる可能性があります。

更新:Findコマンドには、/cその文字列を含む行数をカウントするオプションがあります。

于 2012-05-14T14:03:12.877 に答える
3

マルモスの答えは良いです、そして通常それはあなたの問題を解決するはずです。

しかし、あなたはトークンを理解していないので、私はそれを説明しようとします。

コマンドでファイルの内容を読み取ることができます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つしか存在しないため、これは機能します。

于 2012-05-14T14:26:58.700 に答える