Powershell中的多个排除规则

时间:2018-06-27 13:46:35

标签: powershell powershell-v2.0

我需要从特定年份中排除基于年份,国家名称和上次修改日期的文件,并从该特定年份中删除其余文件,并将该国家/地区移至存档文件夹

例如

  • SS_MM_Master_finland_2018.xlsx最后修改日期2018年6月27日19:00。
  • SS_MM_Master_finland_2017.xlsx上次修改日期2017年6月27日19:00。

在这种情况下,文件名和国家/地区不同,因此将排除特定的年份和最后修改日期,从而排除两个文件

想根据某人的经验知道某人是否可以举一个小例子...不一定是上述例子中的例子,也不必是任何多重排除规则,否则将不胜感激

有趣的是,我只有一个文件排除器语句,并且不知道基于文件名的多个文件排除器规则。

我只有一个文件排除语句

$sourcedir = 'C:\Test\Country'
$destdir = 'C:\Test\Country\Archive'

Get-ChildItem -File -Path $sourcedir |
    Sort-Object -Property LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Move-Item -Destination $destdir -force

谢谢

1 个答案:

答案 0 :(得分:0)

我将其发布为答案,因为我没有人物来做评论。 让我看看我是否理解这一点。

$Files = Get-ChildItem -File C:\Setup | select Name, LastWriteTime

然后您将导出以下文件:

Name                           LastWriteTime       
----                           -------------       
SS_MM_Master_Finland_2017.txt  6/27/2018 4:30:09 PM
SS_MM_Master_Finland_2018.txt  6/27/2018 4:30:09 PM
SS_MM_Master_Germany_2017.txt  6/27/2018 4:30:09 PM
SS_MM_Master_Germany_2018y.txt 6/27/2018 4:30:09 PM
SS_MM_Master_Italy_2017.txt    6/27/2018 4:30:09 PM
SS_MM_Master_Italy_2018.txt    6/27/2018 4:30:09 PM

然后您可以使用foreach进行以下操作:

foreach ($File in $Files) {

If ($File.Name -like "*Italy*" -and $File.Name -like "*2017*") {
Write-Host $File.Name
}
Else{
Write-Host "This is not the file you are looking for" $file.Name
}
}

我相信您可以理解此代码背后的概念。您可以将 Italy 替换为与Read-Host一起使用的变量,该变量针对if语句中的所有条件,然后如果满足,则将文件移至另一个文件夹。

希望这个答案对您有帮助。