使用 findstr 查找包含 "%" 的字符串
Find string which include "%" with findstr
我正在为 windows 制作一个 bat 文件,它将 运行 进行模拟。
然后它将在控制台中查看结果并搜索字符串 "win%"。
Ftm 我可以找到任何东西,包括 win,但这给了我很多不必要的数据。
这是我现在得到的:
command | findstr win >> file.txt
这给了我很多不必要的数据。
我要查找:
command | findstr win% >> file.txt
但是这个剂量根本没用....
如何找到包含“%”的字符串?
Br
根据您的问题标签,您的命令出现在批处理脚本中。
百分比文字必须在批处理脚本中转义为 %%
。
command | findstr win%% >> file.txt
以上将始终有效,因为您的搜索字符串仅包含百分之一。
请注意,管道的每一侧都使用命令行上下文(不是批处理)在自己的 cmd.exe 进程中执行。这可能会导致问题,具体取决于您的搜索字符串和当前定义的变量。
假设您要搜索 win%lose%
。以下 可能 有效:
command | findstr win%%lose%% >>file.txt
只要环境中没有名为 lose
的变量,它就可以工作。由于 FINDSTR 命令在命令行上下文中执行,因此如果未定义 lose
,则会保留 %lose%
字符串。
但如果定义了 lose
,则 %lose%
会扩展为该值,您会得到错误的搜索结果。这可以通过在表达式中引入消失的插入符号来解决。像 %^lose%
这样的字符串不会扩展名为 lose
的变量。变量扩展将包含插入符号作为名称的一部分,不会找到任何内容,并保持字符串不变。之后,正常的转义阶段将 "escape" l
变成自身,插入符号消失。现在,如果定义了一个名为 ^lose
的变量,这将失败,但这是极不可能的。
但是该命令在批处理脚本中,因此插入符号必须转义。
command | findstr win%%^^lose%% >> file.txt
简单地将字符串括在引号中会更容易,这样您就不需要转义插入符号了。
command | findstr "win%%^lose%%" >> file.txt
我正在为 windows 制作一个 bat 文件,它将 运行 进行模拟。 然后它将在控制台中查看结果并搜索字符串 "win%"。 Ftm 我可以找到任何东西,包括 win,但这给了我很多不必要的数据。
这是我现在得到的:
command | findstr win >> file.txt
这给了我很多不必要的数据。
我要查找:
command | findstr win% >> file.txt
但是这个剂量根本没用....
如何找到包含“%”的字符串?
Br
根据您的问题标签,您的命令出现在批处理脚本中。
百分比文字必须在批处理脚本中转义为 %%
。
command | findstr win%% >> file.txt
以上将始终有效,因为您的搜索字符串仅包含百分之一。
请注意,管道的每一侧都使用命令行上下文(不是批处理)在自己的 cmd.exe 进程中执行。这可能会导致问题,具体取决于您的搜索字符串和当前定义的变量。
假设您要搜索 win%lose%
。以下 可能 有效:
command | findstr win%%lose%% >>file.txt
只要环境中没有名为 lose
的变量,它就可以工作。由于 FINDSTR 命令在命令行上下文中执行,因此如果未定义 lose
,则会保留 %lose%
字符串。
但如果定义了 lose
,则 %lose%
会扩展为该值,您会得到错误的搜索结果。这可以通过在表达式中引入消失的插入符号来解决。像 %^lose%
这样的字符串不会扩展名为 lose
的变量。变量扩展将包含插入符号作为名称的一部分,不会找到任何内容,并保持字符串不变。之后,正常的转义阶段将 "escape" l
变成自身,插入符号消失。现在,如果定义了一个名为 ^lose
的变量,这将失败,但这是极不可能的。
但是该命令在批处理脚本中,因此插入符号必须转义。
command | findstr win%%^^lose%% >> file.txt
简单地将字符串括在引号中会更容易,这样您就不需要转义插入符号了。
command | findstr "win%%^lose%%" >> file.txt