2016-02-22 170 views
0

如何重寫下面的代碼,以便它可以分組爲只有一個IF語句而不是多個IF,並且只有在所有文件(outPath,outPath2,outPath3)都存在時才執行remove命令。Powershell刪除文件

If ($outPath){ 
Remove-Item $outPath 
} 

If ($outPath2){ 
Remove-Item $outPath2 
} 

If ($outPath3){ 
Remove-Item $outPath3 
} 

回答

2

如果你想確保所有的路徑存在,您可以使用Test-Path-notcontains得到你想要的結果。

$paths = $outPath1, $outPath2, $outPath3 
if ((test-path $paths) -notcontains $false){ 
    Remove-Item -Path $paths 
} 

Test-Path適用於路徑數組。它會返回一個數組布爾值。如果其中一條路徑不存在,則返回一個錯誤。 if是基於該邏輯的條件。

由於您只會刪除它們,因此您不必擔心Remove-Item cmdlet的存在。

+0

'(測試路徑$路徑)-notcontains $ false' ...好方法 – Kiran

1

這將刪除文件,如果它們存在,並抑制錯誤,如果找不到文件。缺點是如果除了(路徑未找到)之外應該存在錯誤,那麼這些錯誤也會被抑制。

Remove-Item -Path $outPath,$outPath1,$outPath2 -ErrorAction SilentlyContinue 

編輯

如果你只是想如果當時存在的所有3個文件刪除:

if((Test-Path $outPath) -and (Test-Path $outPath1) -and (Test-Path $outPath2)) 
    { 
     try 
     { 
      Remove-Item -Path $outPath,$outPath1,$outPath2 -ErrorAction Stop 
     } 
     Catch 
     { 
      throw $_ 
     } 

    } 
+1

我不認爲該操作是要求這一點。他只是想刪除他們,如果都存在 – Matt

+0

啊是啊好吧:))...謝謝@Matt – Kiran