【问题标题】:In a batch file, how to find the occurrences of string in a textfile?在批处理文件中,如何查找文本文件中出现的字符串?
【发布时间】:2012-05-22 00:35:18
【问题描述】:

我有一个文本文件,我想运行一个批处理文件,它读取整个文本文件并告诉我字符串“PASS”的出现次数:

请您帮忙解决一下 - 我无法理解 BAT 文件中令牌的用法。

【问题讨论】:

    标签: string for-loop batch-file


    【解决方案1】:

    也许findstr 命令会帮助你:Findstr Help。 它不会打印出现的次数,但也许您可以对结果做点什么。

    更新: Find command 有一个 /c 选项,用于计算包含该字符串的行数。

    【讨论】:

      【解决方案2】:

      Mulmoth 的回答很好,通常应该可以解决您的问题。

      但由于您不了解令牌,因此我将尝试对其进行解释。

      您可以使用FOR/F 命令读取文件的内容。
      FOR/F 将逐行读取文件,每个空行都将被跳过,每一行都以 EOL 字符开头(默认为 ;)。

      默认使用tokens=1 delims=<TAB><SPACE> EOL=;
      在这种情况下,直到行尾或第一个 SPACETAB 之前,您总是得到一个令牌。

      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)处分成四个标记,然后标记为空。

      如果您不想要多个标记,或者在特定标记之后的行的其余部分,您可以使用*
      for /F "tokens=1,2,3,4*" %%a in (myFile.txt) do ( echo token1=%%a token2=%%b token3=%%c token4=%%d )

      现在,在 token4 中将是第四个标记和该行的其余部分。

      for /F "tokens=1*" %%a in (myFile.txt) do (
        echo token1=%%a token2=%%b token3=%%c token4=%%d
      )
      

      在这种情况下,只有一个令牌存在 (%%a) 其他 (%%b %%c %%d) 不是有效令牌,文本 token2=%b token3=%c token4=%d 将被回显。

      您也可以使用 delim 将所有标记减少为一个标记。 for /F "delims=" %%a in (myFile.txt) 做 ( 回显完整行=%%a )

      这行得通,因为只有一个标记,因为没有任何字符可以将行拆分为更多标记。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        • 2020-04-17
        • 2021-11-25
        相关资源
        最近更新 更多