Пакетный файл для определения измененных дат - PullRequest
0 голосов
/ 19 января 2011

Эй, ребята, я ищу командный файл, чтобы сообщить мне, были ли модифицированы определенные папки сегодня (я буду запускать его каждое утро). Я рад указать каждую из папок для запроса, но я пока не смог найти ничего, соответствующего моим требованиям. Если кто-нибудь знает, что это за код для .bat, это было бы здорово :) Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

Вот командный файл, который должен сделать трюк:

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
for /D %%Q IN (*.*) DO (
  set FILETIME=%%~tQ
  if "!FILETIME:~0,10!"=="%DATE:~4%" echo %%Q
)

Это работает путем сравнения части даты метки времени файла с текущей датой.

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

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

0 голосов
/ 19 января 2011

Вы можете использовать VBScript

Set objFS = CreateObject( "Scripting.FileSystemObject" )
strFolder = WScript.Arguments(0)
Set objFolder = objFS.GetFolder(strFolder)
If DateDiff("d", Now, objFolder.DateLastModified ) = 0 Then
    WScript.Echo "0"
End If 

в вашем командном файле (или командной строке)

C:\test>cscript //nologo test.vbs myFolderName

использовать цикл for, чтобы перехватить вывод. (Или вы можете сделать все в VBScript)

...