2014-01-31 1 views
0

Мне нужна партия, которая проверяет и отображает, был ли и когда был изменен файл.Пакет для проверки и отображения последнего времени изменения определенного файла

Если C: \ temp \ test \ TEST.LOG изменился сегодня (день проверки), время отображения/эха изменения. (Например: "Файл изменен 16:55 ")

Если не C: \ Temp \ тест \ TEST.LOG изменилось сегодня (день проверки), дисплей/эхо" Файл не имеет был изменен сегодня "

+0

Можете ли вы опубликовать самую раннюю версию Windows, на которой это должно работать? Я опубликовал предложение PowerShell, но это будет работать только в Windows 2000 и более поздних версиях. –

ответ

1

Самый простой способ сделать это - запустить PowerShell, который имеет более мощные функции для обработки данных в течение дня и опроса файлов. Вы можете запустить из пакетного файла следующим образом:

powershell -ExecutionPolicy Bypass -Command "& { if ($(Get-Item c:\temp\test\test.log).LastWriteTime-gt [DateTime]::Today) { Write-Host "File Changed at $(Get-Item c:\temp\test\test.log).LastWriteTime" } else { Write-Host "File not changed" }}" 

Вот команда PowerShell отформатирован более красиво, для понимания

if ($(Get-Item c:\temp\test\test.log).LastWriteTime-gt [DateTime]::Today) { 
    Write-Host "File Changed at $(Get-Item c:\temp\test\test.log).LastWriteTime" 
} 
else { 
    Write-Host "File not changed" 
} 
+0

Ваш код работает ** BUT ** Кажется, отображается только «File Changed at ...», если log-fil был создан **, а не ** изменен/обновлен **. test.log не создается каждый день, он обновляется с большим количеством данных. – Tomas

+0

Извините - это должно быть 'LastWriteTime' не' CreationTime'. Я неправильно понял вопрос. –

0
@ECHO OFF 
SETLOCAL 
SET "targetfile=c:\temp\test\test.log" 
IF NOT EXIST %targetfile% ECHO %targetfile% does NOT exist&GOTO :eof 
FOR %%a IN ("%targetfile%") DO FOR /f "tokens=1*delims= " %%b IN ('ECHO %%~ta') DO IF "%date%"=="%%b" (
ECHO File changed %%c 
) ELSE ECHO File has NOT been changed today 
GOTO :EOF 

Это должно работать. Возможно, вам придется пощекотать tokens= и delims в зависимости от ваших настроек даты и времени.

Просто найдите дату и время цели, разделите ее на часть даты в %%b и время в %%c. Сравните %%b с текущей датой; если это то же самое, оно было изменено сегодня, поэтому покажите дату файла с %%c, иначе он не был изменен сегодня.

Смежные вопросы