2012-06-11 92 views
3

現在,我有一個腳本可以獲取目錄中的最後五個文件。它看起來像這樣:PowerShell腳本來選擇目錄中的某些文件

$diffs = Get-ChildItem "C:\usr\local\work\tnl\Database\ReleaseScripts" -Filter "*.sql" | Sort-Object Name -Descending | Select-Object -first 5 | Sort-Object Name 

我需要它選擇所有的最後一個文件,從某一個開始。例如,如果該文件被命名爲

201.txt
202.txt
203.txt
204.txt
高達
210.txt

我可能需要選擇所有以203.txt開頭的文件到列表的末尾。

我可以得到我正在查找的文件名並在腳本中使用它。我只是不熟悉我必須做的腳本工具。有沒有辦法編輯我的線,讓它只在一行中完成,或者我必須把它放在一個循環中才能得到我的結果?

回答

4

這是工作,但需要擴展,如果您的文件名稱結構更復雜或有一個機會,您的原始過濾器將抓住不符合文件名稱。

$diffs = Get-ChildItem "C:\usr\local\work\tnl\Database\ReleaseScripts" -Filter "*.sql" |? 
{[Int][System.Text.RegularExpressions.Regex]::match($_.name,"\d+").Value -gt 201 }| 
Sort-Object Name -Descending | Select-Object -first 5 | Sort-Object Name 
+0

+1 - 詞法與數值比較的優點。我認爲這是很好的基礎上,他的原始腳本按字母順序排序的名稱。 – JNK

+0

謝謝我爲我工作,我也試過 '$ diffs = Get-ChildItem「C:\ usr \ local \ work \ tnl \ Database \ ReleaseScripts」-Filter「* .sql」|排序對象名稱 - 降序| Where-Object {$ _。name -gt「201」} | Sort-Object Name' 使用Where-Object而不是select-object。我擔心這不會實際選擇對象,但它似乎做我想要的 – mrfreester

+0

只需注意,sql 2001將失敗,然後測試,因爲它是更少的詞彙 – rerun

相關問題