Назад | Перейти на главную страницу

Как избежать символа двойной кавычки для использования в findstr в командной строке PowerShell?

Эта командная строка работает в cmd.exe:

findstr /l /i /s /c:"key=\"Smtp" *.config

Однако при запуске в PowerShell 2 в Windows 7 Ultimate x64 findstr, похоже, зависает независимо от того, какую комбинацию я использую. Я ищу файл игрушки, который я создал (только один в папке), в котором есть только эта запись, поэтому я знаю, что это не просто займет больше времени:

<add key="SmtpHost" value="localhost">

Но эти варианты, которые я пытался, никогда не возвращаются в PowerShell (они также не отображают приглашение >>, указывающее на незавершенную строку).

findstr /l /i /s /c:"key=`"Smtp" *.config
findstr /l /i /s /c:"`"" *.config
findstr /l /i /s /c:"key=""Smtp" *.config
findstr /l /i /s /c:'key="Smtp' *.config

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

findstr /r /i /s /c:"key=.Smtp" *.config

Но как передать двойные кавычки, чтобы findstr в PowerShell успешно?

Есть ли какие-то функциональные возможности, которые вы получаете от Findstr, которые вы не можете получить от самих командлетов Powershell?

Get-ChildItem .\* -Include *.config -Recurse | Select-String '"key="Smtp"'

Попробуй это:

findstr / l / i / s / c: "key = \` "Smtp" * .config

вам нужно убежать и от аристократии, и от \"`

подробнее здесь: http://www.rlmueller.net/PowerShellEscape.htm