此命令行在 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
你需要逃离豪华和 \
“”
答案2
您从 Findstr 获得的某些功能是否无法从 Powershell cmdlet 本身获得?
Get-ChildItem .\* -Include *.config -Recurse | Select-String '"key="Smtp"'