我想在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)
}
答案 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)
}