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

17

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

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

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

    
задан Ricky Supit 21.01.2010 в 18:24
источник

5 ответов

31

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

for %a in (MyFile.txt) do set FileDate=%~ta
    
ответ дан Andy Morris 22.01.2010 в 11:01
источник
6

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

forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime"
    
ответ дан user2607028 12.05.2015 в 18:05
источник
2

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

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

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

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

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

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

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

ответ дан Cheeso 21.01.2010 в 18:38
источник
1

вы можете получить дату изменения файлов, используя также 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
    
ответ дан ghostdog74 22.01.2010 в 01:33
источник
0

Какой вывод (точно) выполняет 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 )

    
ответ дан BlueRaja - Danny Pflughoeft 21.01.2010 в 18:51
источник