2017-08-07 9 views
0

複数のファイルをループしてジョブが完了したかどうかを確認しようとしています。私はpowershellにはまったく新しいので、より詳細なプログラムを作成する前に、どのようにループするかの基本を理解しようとしています。自分のコードで何が間違っているのか分かりません。プログラムを実行すると、出力(「成功」または「失敗」)は表示されません。特定の文字列を検索するには、SQLディレクトリのファイルをループ上の任意の提案はあまりにも感謝:)Powershellが複数のファイルをループする

Get-ChildItem "C:\Users\afila\Desktop\TEST" -Filter "*.txt" | 
ForEach-Object{ 
if(Object.Contains("*Loaded successfully*")) 
{ 
    Write-Host "Success" 
} 
else 
{ 
    Write-Host "Fail" 
} 

}

答えて

-1

あなたがパイプラインを下に渡されたオブジェクトを表すために$_を使用する必要がパイプラインを使用しました。例えば

Get-ChildItem C:\temp\ -Filter "txt" | 

Foreach-Object{ 
    if($_.Contains("my test info")) 
    { 
     write-host "success" 
    } 
} 

$_は、他の言語の単語「この」に類似しており、現在のオブジェクトの単なる表現です。

+0

この構文はPowerShell内にすでに存在するため、 'this'とは違います。 – TheIncorrigible1

0

Object.Containsがある場所で$ _を使用します。 "$ _。Contains"と読みます。

IF文にワイルドカードを使用しているので、あなたは試してみることもできます。デフォルトでは、検索はワイルドカードで扱われます:

Get-ChildItem "C:\Users\afila\Desktop\TEST" -Filter "*.txt" | 
ForEach-Object{ 
if($_ -like "Loaded successfully") 
{ 
    Write-Host "Success" 
} 
else 
{ 
    Write-Host "Fail" 
} 
+0

'-like'の目的はすべてワイルドカード操作なので、他の動作はありません。 – TheIncorrigible1

+0

それは私が言ったことですか? " - ワイルドカードで検索を扱う" – Tchotchke

関連する問題