如何在 DOS 中使用 FIND 或 FINDSTR 获取文件中字符串的精确匹配

如何在 DOS 中使用 FIND 或 FINDSTR 获取文件中字符串的精确匹配

我正在尝试获取文件中路径的精确匹配(“\Users\sachin.a.goyal\Desktop\test\”):

 Biggest.txt:
 1 number: 
 name = DMS 3.0 R2 - Deployment Workbook_APAC v4_WMT 
 size = 15634835 
 path = \Users\sachin.a.goyal\Desktop\test\ 
 2 number: 
 name = Scenarios 
 size = 254 
 path = \Users\sachin.a.goyal\Desktop\test\New folder\

我正在使用这个命令:

 findstr /x /c:"\Users\sachin.a.goyal\Desktop\test\" Biggest.txt

但是执行此命令后,DOS 窗口卡住了。它没有给出任何错误,但看起来它需要其他参数。请帮忙。

答案1

/x 不起作用,因为整行需要与搜索字符串匹配,在本例中,它以 为前缀path =。此外,\符号需要转义,这样它们就不会被解释为命令。最后,正则表达式模式将有助于捕获正确的行,因为它以空格结尾,然后是行尾 - 行尾可以表示为$

H:\>findstr /r /c:"\\Users\\sachin.a.goyal\\Desktop\\test\\ *$" biggest.txt
path = \Users\sachin.a.goyal\Desktop\test\

您的搜索挂起的原因之一可能是\匹配命令。

如果您使用变量来保存要搜索的路径,则仍需要转义反斜杠。您可以使用替换功能执行此操作:

set path="c:\Users\sachin.a.goyal\Desktop\test\"
set path=%path:\=\\%
echo path
c:\\Users\\sachin.a.goyal\\Desktop\\test\\

第二行表示,将所有反斜杠替换为双反斜杠。不幸的是,我现在没有 Windows 机器可以测试,但您可能仍需要转义反斜杠:

    set path=%path:\\=\\\\%

相关内容