5

Я хочу знать, когда файл был изменен в последний раз.

Я могу получить эту информацию, используя следующий пакетный скрипт:

FOR %% i IN (myfile) УСТАНОВИТЬ modif_time = %% ~ ti

Проблема в том, что мне нужна вторая из последних модификаций, а команда %~t возвращает дату и время только с часами и минутами.

Я могу проверить секунды только вручную, просматривая файл "Окно свойств" файл за файлом.

Как я могу получить время с секундами в партии?

2 ответа2

6

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.

0

Используйте интерпретатор команд, который способен на это.

Вот как это сделать с помощью TCC/LE от JP Software, с некоторыми изменениями в теме, добавленными для хорошей меры:

[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

дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .