web-dev-qa-db-ja.com

バッチ-ファイルの最終変更時刻(秒単位)

ファイルが最後に変更されたのはいつか知りたいのですが。

次のバッチスクリプトを使用して、これらの情報を取得できます。

%% i IN(myfile)の場合、modif_time = %%〜tiを設定します

問題は、最後の変更の2番目が必要であり、コマンド%~tが日付と時刻を時と分のみで返すことです。

「プロパティウィンドウ」をファイルごとに手動で表示することによってのみ、秒を確認できます。

バッチで秒単位の時間を取得するにはどうすればよいですか?

5
user3133076

Windows Vista/7以降

Windows Server 2003以降

少しの努力で、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


Windows XP

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バージョンを入手できます。

6
and31415

それが可能なコマンドインタープリターを使用してください。

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

参考文献

0
JdeBP