2017-07-14 2 views
-1

C:\example\exampleのようなパスのINIファイルのテキストを検索したいとします。このようなパスが見つかると、画面に警告のあるメッセージボックスが表示されます。 INIファイルはフォルダとそのサブフォルダにあります。テキストを検索して警告ウィンドウを作成

私は試みましたが、失敗しました。

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

これは絶対に意味をなさないものです。あなたの質問に言い換えていただけますか?あなたのiniファイルはどこにありますか?あなたが得るエラーを投稿してください。そして、あなたのコードで正しいスペルがないかチェックします( '-Filder'?)。 '$ PathOfFolderAndSubfolder'の値を引用符で囲んで –

答えて

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) 
} 
+0

ありがとうございます。メッセージボックスのエラーでiniファイルのparthを設定できる方法はありますか? – marten1234

+0

''($ found | Select-Object -Expand FullName) - 結合 "' '' '' '' –

関連する問題