2017-08-07 94 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

它與'this'完全不同,因爲該構造已存在於PowerShell中。 – 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