Я пытаюсь получить точное совпадение пути ("\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 ответ1

0

/ 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:\\=\\\\%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .