2012-09-19 33 views
1

我要排序的時間戳,這是在文件名定義在與DIR文件 - 最古老的第一: 時間戳= YYYYDDMM排序文件通過時間戳與Windows DIR命令

NAME_20121410.dat 
NAME_20121509.dat 
NAME_20121609.dat 

結果應該看起來像這個:

NAME_20121509.dat 
NAME_20121609.dat 
NAME_20121410.dat 

我該如何做到這一點呢?

+0

'DIR /'可以解釋它 – jeb

+0

@jeb - 其實,我不認爲一個簡單的襯墊是可能的?。我相信OP希望根據名稱中的日期進行排序,而不是基於上次修改或創建的時間戳。名稱中的日期與文件時間戳之間可能沒有關聯。 – dbenham

+0

我想'dir/O-N',但我重讀了這個問題,並且看到愚蠢的日期格式'YYYY DD MM'而不是'YYYY MM DD'。然後解決 – jeb

回答

3

由於日期格式很愚蠢,因此您需要首先拆分文件名並對重新排列的名稱進行排序。
不是一個班輪,但它起作用(在批處理文件中)。

@echo off 
(
    for %%A in (*_*.dat) do @(
    call set "name=%%A" 
    call set "nameDate=%%name:*_=%%" 
    call set "Year=%%nameDate:~0,4%%" 
    call set "Day=%%nameDate:~4,2%%" 
    call set "Month=%%nameDate:~6,2%%" 
    call echo %%Year%%%%Month%%%%Day%% %%name%% 
) 
) | sort | (
    for /F "tokens=1,* delims= " %%A in ('more') DO @echo %%B 
) 
2

,如果你可以使用PowerShell,試試這個:

PS II> ls *.dat | sort {$_ -replace '(\d{2})(\d{2})\.*','$2$1'}