2013-08-04 27 views
0

說我有一個腳本。該$result = convertDoc(source, dest)可能有如何根據字符串中的字創建輸出

DAOpenDocument( 「C:\文檔\ test.xlsx」)失敗:沒有文件目前是一個失敗的open(0×0010)

,或者這個成功:

EX_CALLBACK_ID_PAGECOUNT:文件有1頁。
導出成功:創建1個輸出文件。

我需要創建一個邏輯,如果$結果具有字符串「失敗」,然後Write-Host失敗其他$result具有關鍵字「導出成功」,然後寫主機「成功」

回答

0

嘗試類似的關鍵詞這個:

$result | Select-String '(failed|export successful)' | % { 
    if ($_.Matches.Groups[1].Value -eq 'failed') { 
    Write-Host 'failed' 
    } else { 
    Write-Host 'successful' 
    } 
} 

請注意$_.Matches.Groups[1]需要PowerShell v3。在早期版本中,你必須擴大,才能訪問他們的組:那就是說

$value = ($_.Matches | select -Expand Groups)[1].Value 

,你有過convertDoc()控制?如果是的話,它會是好了很多有功能拋出異常時沒有文檔打開,並調用它的try..catch塊:在$結果

try { 
    $result = convertDoc(source, dest) 
} catch { 
    Write-host $_.Exception.Message 
} 
+0

感謝您的代碼塊。我一定會嘗試。這不是PS 3.0,所以我會嘗試-expand組。此外,我沒有任何控制ConvertDoc的源代碼,否則我會把try/catch。我會讓你知道它是如何去的。 –

0

使用模式匹配。選項是-match,-contains,-like操作符。 例如如果($結果-match「失敗」){寫主機「失敗」}其他{寫主機「使命sucess」}

0

爲什麼不呢?

$result = 'DAOpenDocument("c:\docs\test.xlsx") failed: no file is currently open (0x0010)' 

if($result.contains("failed")) 
{ Write-Host "Failure" } 
elseif($result.contains("successful")) 
{write-host "Success!"} 
else 
{Write-Host "All is good"} 
相關問題