首页 > 解决方案 > PowerShell中的多个排除规则

问题描述

我需要根据该特定年份的年份、国家名称和最后修改日期排除文件,以及该特定年份的其余文件和该国家/地区移至存档文件夹

举个例子

在这种情况下,相同的国家和年份的文件名不同,因此特定年份的最后修改日期将被排除在外,因此这两个文件都将被排除在外

想知道是否有人可以根据他们的经验举一个小例子......不必来自上述例子或任何多重排除规则或任何贡献将不胜感激

有趣的是,我只有单个文件排除器语句并且不知道基于文件名的多文件排除器规则,任何示例都适用

我只有单个文件排除语句

$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

谢谢

标签: powershellpowershell-2.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
}
}

相信你能理解这段代码背后的概念。您可以将意大利替换为您可以使用 Read-Host 执行的变量,该变量适用于 if 语句中的所有条件,然后如果这些条件为真,则将文件移动到另一个文件夹。

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


推荐阅读