如何在 PowerShell 命令行上转义在 findstr 中使用的双引号字符?

如何在 PowerShell 命令行上转义在 findstr 中使用的双引号字符?

此命令行在 cmd.exe 中运行:

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

但是,在 Windows 7 Ultimate x64 上的 PowerShell 2 中运行时,无论我使用哪种组合,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

但是如何在 PowerShell 中成功将双引号传递给 findstr?

答案1

尝试这个:

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

你需要逃离豪华和 \“”

更多信息请点击这里:http://www.rlmueller.net/PowerShellEscape.htm

答案2

您从 Findstr 获得的某些功能是否无法从 Powershell cmdlet 本身获得?

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

相关内容