在文本中查找并创建警告窗口

时间:2017-07-14 09:25:12

标签: powershell search ini

我想在INI文件的文本中搜索类似C:\example\example的路径。当它找到这样的路径时,我希望屏幕上显示带警告的消息框。 INI文件位于文件夹及其子文件夹中。

我试过但我失败了。

$PathOfFolderAndSubfolder = C:\example\example\*
if ((Get-ChildItem -Path $PathOfFolderAndSubfolder -Filder \*/) -eq $true) {
    [System.Windows.Forms.MessageBox]::Show("error", "error", 0)
}

1 个答案:

答案 0 :(得分:2)

Get-ChildItem用于枚举容器的子项(例如,目录中的文件),而不是用于列出文件的内容。使用Get-Content作为后者:

$filename = 'C:\path\to\some.ini'
$pattern  = 'C:\example\example'

if ((Get-Content $filename) -like "*${pattern}*") {
    [Windows.Forms.MessageBox]::Show("error", "error", 0)
}

如果要检查特定文件夹(子)树中的每个INI文件,则需要递归到该文件夹​​并检查每个匹配的文件,例如:像这样:

$basedir  = 'C:\some\folder'
$filename = 'C:\path\to\some.ini'
$pattern  = 'C:\example\example'

$found = Get-ChildItem $basedir -Include '*.ini' -Recurse |
         Where-Object { (Get-Content $_.FullName) -like "*${pattern}*" }

if ($found) {
    [Windows.Forms.MessageBox]::Show("error", "error", 0)
}