Dizelerinizi kesinlikle tarihlere ayırmanız gerekmez ([datetime]
örnekler): Dosya adlarınıza katıştırılmış tarih dizeleri sözcüksel sıralamalarının kronolojik sıralamaya eşdeğer olduğu bir biçimde olduğundan, dize gösterimlerini doğrudan karşılaştırabilirsiniz:
# Simulate output from a Get-ChildItem call.
$files = [System.IO.FileInfo[]] (
"test_20211122_aba1.txt",
"abc_20211129_efg2.txt",
"hij_20211112_lmn3.txt",
"hij_20211112_lmn4.txt",
"opq_20211130_rst5.txt"
)
# Filter the array of files.
$resultFiles =
$files | Where-Object {
$_.Name -match '(?:^|.*\D)(\d{8})(?:\D.*|$)' -and
$Matches[1] -gt ('2021/11/28"' -replace '/')
}
# Print the names of the filtered files.
$resultFiles.Name
$_.Name -match '(?:^|.*\D)(\d{8})(?:\D.*|$)'
bir yakalama grubu aracılığıyla her dosya adında tam olarak 8 basamaklı (son) çalışmayı arar ((...)
), otomatik yansıyan $Matches
değişkenin index ile girişi 1
($Matches[1]
) daha sonra bulunursa.
'2021/11/28"' -replace '/'
tümünü kaldırır /
tarih dizelerinin biçimini aynı yapmak için giriş dizesindeki karakterler. Kısalık için, yukarıdaki çözüm her döngü işleminde bu değişimi gerçekleştirir. Uygulamada, döngüden önce bir kez gerçekleştirirsiniz ve sonucu döngü içinde kullanılmak üzere bir değişkene atarsınız.