Эта командная строка работает в 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