Быстрая встроенная команда, чтобы получить дату последнего изменения файла в Windows?


1

Я пытаюсь получить дату последнего изменения группы файлов в Windows. В системах GNU я могу просто использовать что-то вроде stat -c %Y.

Я знаю о wmicкоманде, но проблема в том, что она очень медленная. В моей системе выполнение команды wmic datafile where Name="..." get LastModified /valueпримерно в 4-7 раз медленнее, чем при использовании порта GNU stat в оболочке MSYS2.

Для моих целей мне нужна альтернатива, более быстрая и встроенная либо в самой Windows, либо в средствах разработки Visual Studio. Меня не волнует формат вывода, потому что я могу сам разобрать его вручную.

Кто-нибудь знает, существует ли что-то подобное?


Вы почти наверняка можете найти порт Windows stat(поиск "stat.exe"). Если нет, то это всего лишь несколько строк C для записи.
AFH

@AFH Проблема в том, что мне нужно решение, встроенное либо в Windows, либо в средства разработки VS. Я искал, но wmic - единственное, что я нашел.
AlexRamallo

Если у вас есть VS, напишите программу самостоятельно (позвоните stat()или lstat(), в зависимости от того, как вы хотите обрабатывать символические ссылки). Или, возможно, это просто в PowerShell, но я никогда не использовал это более, чем минимально.
AFH

Когда я говорю «встроенный», я имею в виду, что мне нужно то, что уже доступно. Конечно, я мог бы написать свой, но для того, что я делаю, это не подходящее решение. Я пишу сценарий, который нужно развернуть на куче компьютеров под управлением Windows с минимально установленными инструментами VS dev. Комплектация исполняемой программы или, что еще хуже, исходного кода, который необходимо собрать, не будет работать для моей конкретной ситуации. Powershell - это то, о чем я раньше не думал, поэтому я просто попробовал это. К сожалению, это на самом деле намного медленнее, чем команда wmic.
AlexRamallo

Если это не сложно в контексте локальной безопасности или антивирусных политик, я не могу понять, почему вы не должны распространять исполняемый файл со своим скриптом. Если ПК установлен на Windows 10, подсистема Linux на Windows уже будет stat. Вы можете вызвать его с помощью bash -c, хотя вам нужно будет использовать Linux, а не имя файла Windows.
AFH

Ответы:


3

Окно командной строки DIR должно выполнить эту работу, если вы можете проанализировать вывод по полю. Передайте вывод в файл по мере необходимости.

Например, dir / o: d / t: w упорядочивает файлы по дате [/ o: d], используя последнее записанное, т.е. измененное) поле [/ t: w] и производит следующее:

Каталог C: \ Intel \ Logs

06.07.2016, 22:28 ..

06.07.2016, 22:28 0 IntelCPHS.log

13.05.2017 22:01 767 814 IntelGFX.log

17.10.2017 22:54 51 608 IntelGFXCoin.log

Если вам нужно время для второго , попробуйте:

forfiles / c "cmd / c echo @file @ftime"

Введите dir /? чтобы увидеть варианты просмотра файлов определенных атрибутов, выходного формата и т. д.


Отлично - я не знал о @...вариантах в ForFiles. Жаль, что вам нужно запланировать новую копию, чтобы cmdпросто сделать эхо. В Linux echoи некоторых других внутренних командах также есть внешние двоичные файлы, чтобы избежать этого, но я не знаю стандартной команды Windows, которая будет делать эквивалент.
AFH
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.