If语句 - 如何检查路径是否包含文件

时间:2017-05-04 10:52:18

标签: shell powershell powershell-v3.0

我刚刚开始使用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!"
}

更新:

$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

这会在$ StorePaths中存储File.xml的路径吗?如果是这样我怎么能复制它,例如Copy-Item $ StorePath.name。\ somepath?

1 个答案:

答案 0 :(得分: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