2017-05-04 75 views
1

我剛開始使用PowerShell,所以執行我的新手錯誤。 我搜索爲一個文件,我將文件的路徑存儲在一個變量,然後我想檢查,如果在該路徑中有特定的文件,然後刪除他們。我無法找到這方面的很多幫助,我認爲if語句存在問題,但我無法弄清楚。如果聲明 - 如何檢查一個路徑是否包含文件

下面的代碼:

$startDirectory = ".\somepath\" 
$FindFileXml = Get-Childitem $startDirectory 

$StorePaths = Get-Childitem $FindFileXml -include "file.xml" -recurse 
if($StorePaths -eq "somefile.cs" -and "diffrentfile.cs") 
{ 
    Remove-Item "somefile.cs" 
    Remove-Item "diffrentfile.cs" 
} 
else{ 
Write-host "file not found!" 
} 

UPDATE:

$StorePaths = Get-Childitem $FindFilterXml-Filter "file.xml" -recurse 

$StorePaths | Select-Object -ExpandProperty Directory 
| Get-ChildItem | 

Where-Object {($_.Name -eq 'GeneratedCode.cs') -or ($_.Name -eq 'TypedEnums.cs')} 

| Remove-Item 

將這個店File.xml在$ StorePaths的路徑?如果是這樣我怎麼能複製它,例如複製項目$ StorePath.name。\ somepath?

+1

是的,這會將file.xml的路徑存儲在$ storePaths中。您可以通過將其複製到複製項目cmdlet來複制它,例如, G。 :'$ StorePaths | Copy-Item -Destination'your_path'' –

回答

4

不要這裏需要if語句。只是過濾您的結果,您要刪除的文件和管他們Remove-Item的cmdlet:

$StorePaths | 
    Where-Object {($_.Name -eq 'somefile.cs') -or ($_.Name -eq 'diffrentfile.cs')} | 
    Remove-Item 

更新: 這個例子只刪除該目錄中的文件,其中一個file.xml是否存在:

Get-Childitem $FindFileXml -Filter "file.xml" -recurse | 
    Select-Object -ExpandProperty Directory | 
    Get-ChildItem | 
    Where-Object {($_.Name -eq 'somefile.cs') -or ($_.Name -eq 'diffrentfile.cs')} | 
    Remove-Item 
+0

我試過了你的代碼,但是文件沒有被刪除。 'file.xml'總是放在一個包含'somefile.cs'和'diffrentfile.cs'的文件夾中,這可能是什麼問題? –

+0

啊,剛纔看到你使用'-include'參數。你可以省略它嗎? –

+0

嗯,我必須首先找到file.xml的路徑,因爲文件file.xml有不同的位置。除了使用'-include'參數以外,還有其他解決方案嗎? –

相關問題