AFAIKを使用ROBOCOPY
すると、精度を 1 日以上細かくすることはできません。
ただし、他の 2 つの方法を使用して、より詳細にすることは可能です。
DIR /o:d /a:-d
現在のディレクトリのファイルを新しいものから古いものの順に並べ替え、ディレクトリをリストから除外します。
古いものから新しいものへとリストを逆にするには、 に変更/o:d
し/o:-d
ます。
また、FOR
ステートメントは同じ種類のことを行うことができます。
@ECHO OFF
setlocal ENABLEDELAYEDEXPANSION
set count=0
:: If some other process left %tmp%\temp.txt, delete it.
if exist %tmp%\temp.txt del %tmp%\temp.txt
for %%x in (*.*) do (
set /a count=!count!+1
:: Capture Size
set size=000000%%~zx
:: Capture Date and Time
set td=%%~tx
:: Turn Date into YYYY/MM/DD format
set dd=!td:~6,4!/!td:~0,5!
:: Set tt=hour of day
set tt=!td:~11,2!
:: Turn AM/PM time into 24 hour day time
if !td:~-2!==PM set /a tt=!tt!+12
:: Add :Minutes to time
set tt=!tt!:!td:~-5,2!
:: Append Size Date Time FileName to temp.txt
call echo !size:~-5! !dd! !tt! %%x>>%tmp%\temp.txt
rem :: Create variable size[n] and set it to: Size Date Time FileName
rem call set size[!count!]=!size:~-5! !dd! !tt! %%x
)
echo.
echo Size Date Time FileName
echo ===== ========== ===== ===============
::
:: Alternate 1: Replacing the Append line to `temp.
:: :: Print Array into %tmp%\temp.txt
:: for /l %%x in (1 1 %count%) do (
:: :: Pipe variable into a file
:: echo !size[%%x]!>>%tmp%\temp.txt
:: )
::
:: Alternate 2: Another way to iterate through the array size[n]
:: :loop
:: set /a ctr=%ctr%+1
:: echo !size[%ctr%]!
:: if %ctr% lss %count% goto loop
::
:: Sort temp.txt, starting at the 6th character (the date).
type %tmp%\temp.txt | sort.exe /+6
del %tmp%\temp.txt
echo.
上記のコードは、見かけほど長くも複雑でもありません。その多くは単なる注釈であり、半分近くがコードを占めています。残りの多くは冗長なコードであり、表示するためだけに示されています