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