Точное поведение, которое вы видите, немного зависит от того, какую кодовую страницу использует ваш текстовый файл.Предполагая, что в вашем файле используется кодовая страница 1252 - латиница (западноевропейская), тогда ã
равно 0xE3 (десятичное 227).
Причина сбоя FINDSTR объясняется на Каковы недокументированные функции и ограничениякоманда Windows FINDSTR? в разделе Пределы символов для параметров командной строки - Расширенное преобразование ASCII .Там объясняется, как FINDSTR преобразует (искажает) многие не-ASCII-символы командной строки в значение ASCII.
Если вы прочитаете указанный раздел, вы увидите, что символ 227 преобразуется в 112, что соответствует буквеp
.Таким образом, ваша команда FINDSTR ищет неправильную строку.
Единственный способ использовать FINDSTR для поиска вашей строки - поместить строку поиска в текстовый файл и использовать параметр /g:file
.FINDSTR не портит символы при использовании опции /G
.
Если содержимое «search.txt» представляет собой одну строку Conexão falhou
, то следующая команда будет соответствовать правильным строкам:
findstr /I /L /G:search.txt WinSCP.log
При этом способ отображения строки может быть неправильным, в зависимости от вашей активной кодовой страницы.По умолчанию на моей машине установлена кодовая страница 437, поэтому ã
отображается на моей машине как π
.В любом случае, код символа 0xE3.Если вы передадите результаты FINDSTR в файл, вы должны увидеть правильный результат.
Если вы действительно хотите поместить строку поиска в командную строку, тогда вы можете явно указать поиск по регулярному выражению, даже есливы используете /C
, добавив опцию /R
.Затем вы можете использовать .
для сопоставления с любым символом в исходной позиции.
findstr /I /R /C:"Conex.o falhou" WinSCP.log
Другой вариант - вместо этого использовать команду НАЙТИ:
find /I "Conexão falhou" <"WinSCP.log"
Хотя на моем компьютере мне нужноследующее из-за активной кодовой страницы 437
find /I "Conexπo falhou" <"WinSCP.log