如何重寫下面的代碼,以便它可以分組爲只有一個IF語句而不是多個IF,並且只有在所有文件(outPath,outPath2,outPath3)都存在時才執行remove命令。Powershell刪除文件
If ($outPath){
Remove-Item $outPath
}
If ($outPath2){
Remove-Item $outPath2
}
If ($outPath3){
Remove-Item $outPath3
}
如何重寫下面的代碼,以便它可以分組爲只有一個IF語句而不是多個IF,並且只有在所有文件(outPath,outPath2,outPath3)都存在時才執行remove命令。Powershell刪除文件
If ($outPath){
Remove-Item $outPath
}
If ($outPath2){
Remove-Item $outPath2
}
If ($outPath3){
Remove-Item $outPath3
}
如果你想確保所有的路徑存在,您可以使用Test-Path
與-notcontains
得到你想要的結果。
$paths = $outPath1, $outPath2, $outPath3
if ((test-path $paths) -notcontains $false){
Remove-Item -Path $paths
}
Test-Path
適用於路徑數組。它會返回一個數組布爾值。如果其中一條路徑不存在,則返回一個錯誤。 if是基於該邏輯的條件。
由於您只會刪除它們,因此您不必擔心Remove-Item
cmdlet的存在。
這將刪除文件,如果它們存在,並抑制錯誤,如果找不到文件。缺點是如果除了(路徑未找到)之外應該存在錯誤,那麼這些錯誤也會被抑制。
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 $_
}
}
'(測試路徑$路徑)-notcontains $ false' ...好方法 – Kiran