Пакетный скрипт: запись даты самого старого файла в каталоге в текстовый файл

Я пытаюсь записать дату изменения самого старого файла в каталоге в текстовый файл. На данный момент я могу написать все имена файлов (я назвал их датой их создания, но) в порядке от самого старого к самому новому, но, похоже, не могу ограничить это просто выводом самого старого или действительно получить измененную или созданную дату/время. Мой каталог удален на случай, если он сделает разницу, и моя текущая попытка выглядит следующим образом:

dir "\\dirxxxx\xxxxxxx\xxxxx\xxxxx\xxxxx\*.*" /b /a-d /o-d`

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


person Fearghal    schedule 03.07.2013    source источник


Ответы (2)


попробуй это:

for /f "delims=" %i in ('dir /b/o-d/a-d') do set "oldesttime=%~ti"
>"log.txt" echo %oldesttime%
person Endoro    schedule 03.07.2013
comment
Спасибо. Где я могу установить местоположение моего файла? for /f delims= %i in ('dir \\dirxxxx\xxxxxxx\xxxxx\xxxxx\xxxxx*.* /b/o-d/a-d') do set old=%~i echo %oldest% - person Fearghal; 03.07.2013
comment
Да, до или после параметров в двойных кавычках - person Endoro; 03.07.2013
comment
Ваши два комментария вверх не работают? for /f "delims=" %%i in ('dir /b/o-d/a-d "C:\path name"') do set "oldest=%%~i" - person Endoro; 03.07.2013
comment
Я получил это эхом обратно ко мне, но не войдя в файл. - person Fearghal; 03.07.2013
comment
На самом деле он повторяет имя текстового файла, а не дату его создания. Он создает файл, но он пустой :( Вот моя попытка использовать ваш отзыв: › for /f delims= %i in ('dir\\xxxxxx\xxxxx\xxxxx\xxxx*.* /b/o-d/a-d' ) установить самый старый=%~i ››fileTest.txt echo %oldest% - person Fearghal; 03.07.2013
comment
мой скрипт для /f delims= %i in ('dir \\xxxxxxxx\xxxxxxx\xxxxxxx\xxxxxx\xxxxx*.* /b/o-d/a-d') do set oldtime=%~ti›log.txt echo % oldtime% Failed: файл log.txt создан, и на моем экране cmd отображается эхо = P:\›set oldtime= echo %oldesttime% 1>log.txt, но log.txt пуст - person Fearghal; 03.07.2013
comment
cmd prom, pt для тестирования, но в конечном итоге будет в пакетном режиме - person Fearghal; 03.07.2013
comment
в пакетных файлах код должен быть: for /f "delims=" %%i in ('dir /b/o-d/a-d') do set "oldesttime=%%~ti" с двумя % для i. - person Endoro; 03.07.2013
comment
Кто-нибудь знает, почему решение не пишет в файл? for /f delims= %i in ('dir \\xxxxxxxx\xxxxxxx\xxxxxxx\xxxxxx\xxxxx*.* /b/o-d/a-d') do set oldtime=%~ti›log.txt echo %oldesttime% - person Fearghal; 05.07.2013
comment
Получил решение. Спасибо Endoro и foxidrive за ваши усилия. - person Fearghal; 05.07.2013

Решение: вместо этого используйте vbs.

Option Explicit  
Dim fso, path, file, recentDate, recentFile, objFileHandle
Set fso = CreateObject("Scripting.FileSystemObject")
Set recentFile = Nothing
For Each file in fso.GetFolder("\\xxxxxx\xxxxxxx").Files
  If (recentFile is Nothing) Then
    Set recentFile = file
  ElseIf (file.DateLastModified < recentFile.DateLastModified) Then
    Set recentFile = file
  End If
Next

If recentFile is Nothing Then
  WScript.Echo "no recent files"
Else
  WScript.Echo recentFile.DateLastModified

  Set objFileHandle = fso.OpenTextFile("\\Vxxxxxx\xxxxx", 2, "True")
  objFileHandle.Write(recentFile.DateLastModified)
  objFileHandle.Close
End If
person Fearghal    schedule 05.07.2013