Как я могу избежать двойных кавычек для использования в 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?

2 ответа

Решение

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

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

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

больше информации здесь: http://www.rlmueller.net/PowerShellEscape.htm

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

Get-ChildItem .\* -Include *.config -Recurse | Select-String '"key="Smtp"'
Другие вопросы по тегам