簡體   English   中英

按文件名末尾的數字對文件進行排序

[英]Sort files by number in the end of a file name

我需要幫助完成一項棘手的任務。

我有一個具有相同結尾的 *.xml 文件列表。 下面的名稱僅顯示命名約定規則。

EEEEEEEEEE-JJJ-ZZZZZ_DDDDD-XML--0000001629358212.xml

EEEEEEEEEE-JJJ-OOOOOO-XML--0000001533506936.xml

EEEEEEEEEE-JJJ-AAAAAA-XML--0000001572627196.xml

文件名長度可能不同,但對我來說最后按這個數字排序很重要。 使用 SQL 語法會更容易,但我需要一個 PS 解決方案)。

LastWriteTime Sort-Object 比其他簡單方法更有效 - 但是當涉及到幾個具有相同 hh:mm PS 的文件時,順序會混合。

在這些文件應該發生的步驟鏈的開頭,我從每個文件名的開頭刪除了時間戳。 我能夠做到這一點:

dir *EEEEEEEEEE*.xml | Rename-Item -NewName {$_.name.substring($_.BaseName.IndexOf("EEEEEEEEE"))}

但我無法為排序編寫類似的東西。

也許有人可以建議如何解決它? 也許您對 PS Substring 有更多的經驗。

提前致謝。

閱讀並遵循Sort-Object ,向下滾動到-Property參數:


Property 參數的值可以是計算出的屬性。 要創建計算屬性,請使用哈希表。

哈希表的有效鍵如下:

 expression - <string> or <script block> ascending or descending - <boolean>

有關更多信息,請參閱about_Calculated_Properties

也請閱讀示例部分。 采用

Get-ChildItem -File -Filter "*EEEEEEEEEE*-*.xml" |
  Sort-Object -Property @{Expression = { ($_.BaseName -split '-')[-1] }}

謝謝你們的幫助。

我在下面使用了這一行,它在我的情況下有效。 GCI EEEEEEEEEE*.xml | Sort {$_.Name.substring($_.Name.Length - 20,14)} GCI EEEEEEEEEE*.xml | Sort {$_.Name.substring($_.Name.Length - 20,14)}它只讀取文件名末尾的數字,並按照我需要的方式對文件進行排序。

最好的祝福

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM