Как получить точное совпадение строки в файле, используя 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:\\=\\\\%