powershell 中的多个排除规则
multiple exclude rules in powershell
我需要根据年份、国家/地区名称和特定年份的最后修改日期排除文件,并将来自特定年份和国家/地区的其余文件移至存档文件夹
举个例子
- SS_MM_Master_finland_2018.xlsx 最后修改日期 27/06/2018 19:00.
- SS_MM_Master_finland_2017.xlsx 最后修改日期 27/06/2017 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
谢谢
我post这是一个答案,因为我没有角色来做评论。
让我看看我是否理解这个。
$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 with if like:
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 语句中的所有条件,然后如果这些条件为真,则将文件移动到另一个文件夹。
希望这个回答对您有所帮助。
我需要根据年份、国家/地区名称和特定年份的最后修改日期排除文件,并将来自特定年份和国家/地区的其余文件移至存档文件夹
举个例子
- SS_MM_Master_finland_2018.xlsx 最后修改日期 27/06/2018 19:00.
- SS_MM_Master_finland_2017.xlsx 最后修改日期 27/06/2017 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
谢谢
我post这是一个答案,因为我没有角色来做评论。 让我看看我是否理解这个。
$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 with if like:
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 语句中的所有条件,然后如果这些条件为真,则将文件移动到另一个文件夹。
希望这个回答对您有所帮助。