Windows

如何轉義雙引號字元以在 PowerShell 命令行上的 findstr 中使用?

  • August 17, 2011

此命令行在 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 呢?

試試這個:

findstr /l /i /s /c:“key=`“Smtp” *.config

你需要從豪華和 \“`

更多資訊在這裡:http ://www.rlmueller.net/PowerShellEscape.htm

您是否從 Findstr 獲得了一些無法從 Powershell cmdlet 本身獲得的功能?

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

引用自:https://serverfault.com/questions/301793