Как получить точное совпадение строки в файле, используя FIND или FINDSTR в DOS

Я пытаюсь получить точное совпадение пути ("\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:\\=\\\\%
Другие вопросы по тегам