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