ファイルが最後に変更されたのはいつか知りたいのですが。
次のバッチスクリプトを使用して、これらの情報を取得できます。
%% i IN(myfile)の場合、modif_time = %%〜tiを設定します
問題は、最後の変更の2番目が必要であり、コマンド%~t
が日付と時刻を時と分のみで返すことです。
「プロパティウィンドウ」をファイルごとに手動で表示することによってのみ、秒を確認できます。
バッチで秒単位の時間を取得するにはどうすればよいですか?
少しの努力で、forfiles
を使用して、特定のファイルの最終変更時刻を取得できます。
REM "delims=" is required to avoid stripping AM/PM
for /f "delims=" %%i in ('"forfiles /m filename /c "cmd /c echo @ftime" "') do set modif_time=%%i
echo %modif_time%
7:33:54 AM
表示される値はコンピューターの現地時間に基づいており、ファイルのプロパティダイアログに表示される時間と一致します。
http://technet.Microsoft.com/en-us/library/cc753551.aspx
forfiles.exe
はそのままでは使用できませんが、手動で 必須の実行可能ファイル を取得できます。これは、Windows2000リソースキットの一部である古いバージョンです。構文では大文字と小文字が区別され、わずかに異なります。出力も同様です。
for /f %%i in ('"forfiles.exe -mfilename -c"cmd /c echo @FTIME" "') do set modif_time=%%i
echo %modif_time%
153354
ここでは、時間値はUTC形式で表示され、タイムゾーンや夏時間の変更の影響を受けません。この例では、ファイルは15:33:54(UTC)に最後に変更されました。
注Windows 2003 Serverのインストールメディアまたはセットアップメディアからファイルのコピーを取得することで、新しいforfiles.exe
バージョンを入手できます。
それが可能なコマンドインタープリターを使用してください。
JPSoftwareのTCC/LE でそれを行う方法は次のとおりです。テーマのいくつかのバリエーションが適切に投入されています。
[C:\Users\JdeBP]touch /c myfile
10/01/2014 18:31:32.710 C:\Users\JdeBP\myfile
[C:\Users\JdeBP]echo myfile was created at %@filetime[myfile,c,s]
myfile was created at 18:31:32
[C:\Users\JdeBP]echo myfile was last accessed at %@filetime[myfile,a,s]
myfile was last accessed at 18:31:32
[C:\Users\JdeBP]for i in (myfile) do set modif_time=%@filetime[%i,w,s]
[C:\Users\JdeBP]echo myfile was last modified at %modif_time%
myfile was last modified at 18:31:32