batch - время последнего изменения файла с секундами
Я хочу знать, когда файл был изменен в последний раз.
Я могу получить эту информацию, используя следующий пакетный скрипт:
FOR %% i IN (myfile) DO SET modif_time = %% ~ ti
Проблема в том, что мне нужна вторая из последней модификации и команда %~t
возвращает дату и время только с часами и минутами.
Я могу проверить секунды только вручную, просматривая файл "Окно свойств" файл за файлом.
Как я могу получить время с секундами в партии?
2 ответа
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
не доступен из коробки, однако вы можете вручную получить требуемый исполняемый файл. Это старая версия, которая является частью Windows 2000 Resource Kit. Синтаксис чувствителен к регистру и немного отличается, как и вывод:
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).
Примечание Вы можете получить более новую forfiles.exe
версия путем получения копии файла с любого установочного или установочного носителя Windows 2003 Server.
Используйте интерпретатор команд, который способен на это.
Вот как это сделать с помощью JP Software 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
дальнейшее чтение
- JP Software. @FILETIME. Возьмите Command / TCC Help.
- JP Software. ПРИКАСАТЬСЯ Возьмите Command / TCC Help.