आप कड़ाई की जरूरत नहीं पार्स करने के लिए अपने तार में दिनांक ([datetime]
उदाहरण): क्योंकि तारीख स्ट्रिंग में एम्बेडेड अपनी फ़ाइल के नाम कर रहे हैं एक प्रारूप में, जहां उनके शाब्दिक छँटाई करने के लिए बराबर है कालानुक्रमिक छँटाई, आप की तुलना कर सकते हैं स्ट्रिंग अभ्यावेदन सीधे:
# 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.*|$)'
के लिए लग रहा है (पिछले) को चलाने के लिए वास्तव में 8 अंक में प्रत्येक फ़ाइल का नाम के माध्यम से एक पर कब्जा समूह ((...)
) में परिलक्षित होता है, स्वत: $Matches
चर के प्रवेश के साथ सूचकांक 1
($Matches[1]
) बाद में, अगर मिल गया.
'2021/11/28"' -replace '/'
सभी हटा /
पात्रों में से इनपुट स्ट्रिंग बनाने के लिए, प्रारूप तारीख के तार एक ही. संक्षिप्तता के लिए, ऊपर समाधान करता है इस प्रतिस्थापन में प्रत्येक पाश आपरेशन. अभ्यास में, आप प्रदर्शन होगा, यह एक बारसे पहले, पाश, और आवंटित करने के लिए परिणाम के लिए एक चर के अंदर का उपयोग पाश ।