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

11938
Sachin

Я пытаюсь получить точное совпадение пути ("\ 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 застревает. Это не дает никакой ошибки, но выглядит как ожидание какого-то другого параметра. Пожалуйста помоги.

0
Какая операционная система? Это может быть MS-DOS, но, скорее всего, это просто командная строка в Windows [что-то]. Я отмечаю пост "Windows" в настоящее время. Если это явно MS-DOS, смело меняйте его. Daniel Andersson 11 лет назад 1

1 ответ на вопрос

0
Paul

/ 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:\\=\\\\% 
Спасибо большое !! Это сработало. Но проблема в том, что я сохранил путь в переменной, и я сопоставляю значение этой переменной в файле. Затем я должен сохранить путь в переменной, как вы сказали с помощью регулярного выражения '\'? Sachin 11 лет назад 0
Да, это должно быть хорошо - ты все еще застреваешь с обратными слешами? Paul 11 лет назад 0
Да .... эта переменная содержит путь только с одной обратной косой чертой Sachin 11 лет назад 0
Можете ли вы проверить это, заполнив переменную двойной обратной косой чертой, и если она сработает, мы найдем способ исправить это Paul 11 лет назад 0
Да, он работает, когда заполняет переменную наподобие этого `code` set var = \\ Users \\ sachin.a.goyal \\ Desktop \\ test \\ * $ Sachin 11 лет назад 0
Теперь вы можете помочь мне, пожалуйста, как я могу изменить путь, хранящийся в переменной как регулярное выражение Sachin 11 лет назад 0
Обновленный ответ с экранированием переменной Paul 11 лет назад 0