ファイル名で定義されているタイムスタンプで DIR を使用して次のファイルを並べ替えたい - 最も古いものから: タイムスタンプ = YYYYDDMM
NAME_20121410.dat
NAME_20121509.dat
NAME_20121609.dat
結果は次のようになります。
NAME_20121509.dat
NAME_20121609.dat
NAME_20121410.dat
ワンライナーでそれを達成するにはどうすればよいですか?
ファイル名で定義されているタイムスタンプで DIR を使用して次のファイルを並べ替えたい - 最も古いものから: タイムスタンプ = YYYYDDMM
NAME_20121410.dat
NAME_20121509.dat
NAME_20121609.dat
結果は次のようになります。
NAME_20121509.dat
NAME_20121609.dat
NAME_20121410.dat
ワンライナーでそれを達成するにはどうすればよいですか?
日付の形式がばかげているため、最初にファイル名を分割し、並べ替えた名前を並べ替える必要があります。
ワンライナーではありませんが、機能します(バッチファイル内)。
@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
)
PowerShell を使用できる場合は、これを試してください。
PS II> ls *.dat | sort {$_ -replace '(\d{2})(\d{2})\.*','$2$1'}