Найти все файлы * string * .dat, которые содержат "string1 string2" в текущем каталоге - PullRequest
0 голосов
/ 10 марта 2020

Мне нужно найти строку "substring1 substring2" в файле данных текущего каталога. Я использую cmd Windows -10. Я использую следующую команду согласно документации Windows:

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/findstr#examples

findstr /c:"hello there" x.y 

Таким образом, она ничего не находит, хотя строка присутствует. Когда я использую ту же инструкцию без ':'

findstr /c:"hello there" x.y 

, она показывает мне все случаи 'привет' и все случаи 'там'.

Вот конкретный случай:

findstr /c: "INVITE sip:" .\*5656*.dat
FINDSTR: Argoment not found after /c

Pls. помощь

1 Ответ

1 голос
/ 10 марта 2020

Это прекрасно работает для меня, так что, я думаю, это проблема чувствительности к регистру. Вам может понадобиться добавить /i, например:

findstr /c:"INVITE sip:" /i *5656*.dat

Вы упомянули without ':', но команда такая же, как и предыдущая (возможно, вы не имеете в виду двоеточие после "sip"?). Это не будет работать без двоеточия в параметре, двоеточие в строке работает просто отлично. Я не уверен, что если findstr ищет слова отдельно ( "это показывает мне все случаи" привет "и все случаи" там "" ), я не смог этого сделать ". И ваш последний пример также не будет работать из-за дополнительного пробела после двоеточия.

Если файлы не работают вообще, находятся ли файлы в подпапке? Вы пробовали более простые термины, а затем начали добавлять слова в строку? Есть ли у них какие-либо специальные символы?

Обновление

Судя по вашим комментариям, в выводимой строке может быть символ возврата каретки, так что вы можете сделать это перенаправить консольный вывод в файл, а затем откройте этот файл, желательно с чем-то лучше, чем Notepad, например Notepad ++.

findstr /c:"INVITE sip:" *5656*.dat > results.txt
...