Подтвердить что ты не робот

Как получить последнюю измененную дату файла в командной строке Windows?

Я использую следующую команду для получения даты файла. Тем не менее, переменная fileDate возвращает пустое значение с тех пор, как мы перешли на другой сервер (Windows Server 2003).

FOR /f %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a 

Есть ли другой более надежный способ получить дату файла?

4b9b3361

Ответ 1

Измените % на %% для использования в пакетном файле, для синтаксиса %~ta введите call /?

for %a in (MyFile.txt) do set FileDate=%~ta

Ответ 2

Вы можете сделать это

forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime"

Ответ 3

Это работает для меня на Vista. Некоторые вещи, которые нужно попробовать:

  • Замените find на полный путь команды find. find - это общее имя инструмента. Там найден unix, который сильно отличается от встроенной на Windows. вот так:
    FOR /f %%a in ('dir ^|%windir%\system32\find.exe /i "myfile.txt"') DO SET fileDate=%%a

  • проверьте вывод команды в окне cmd.exe. Для этого вам нужно заменить %%%.
    FOR /f %a in ('dir ^|c:\windows\system32\find.exe /i "myfile.txt"') DO SET fileDate=%a
    Это может дать вам некоторые идеи.

  • Если это отображается как пустое, а затем в командной строке попробуйте следующее:

    dir | c:\windows\system32\find.exe /i "myfile.txt"

Это должно показать вам, что вам нужно увидеть.

Если вы все еще не можете понять это, отредактируйте свою запись, чтобы включить то, что вы видите из этих команд, и кто-то вам поможет.

Ответ 4

вы можете получить дату изменения файлов, используя также vbscript

Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile= objArgs(0)
WScript.Echo objFS.GetFile(strFile).DateLastModified

сохраните выше как mygetdate.vbs и в командной строке

c:\test> cscript //nologo mygetdate.vbs myfile

Ответ 5

Какой результат (точно) делает dir myfile.txt в текущем каталоге? Что произойдет, если вы установите разделители?

FOR /f "tokens=1,2* delims= " %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a 

(обратите внимание на пробел после delims=)
(чтобы облегчить жизнь, вы можете сделать это из командной строки, заменив %%a на %a)