Пакетный файл Windows - проверьте, был ли файл изменен - PullRequest
0 голосов
/ 05 октября 2009

Я настраиваю машину Windows для непрерывного запуска презентации PowerPoint. Файл ppt находится на общем ресурсе samba (общий доступ к файлам Windows) и будет периодически обновляться. Мне нужен способ сделать командный файл, который перезапустит слайд-шоу PPT, если файл был изменен. Пакетный сценарий будет запускаться через регулярные промежутки времени и, будем надеяться, проверит, обновился ли файл, и перезапустит слайд-шоу, если оно было.

Если в PowerShell есть способ сделать это, это тоже сработает.

Ответы [ 2 ]

4 голосов
/ 05 октября 2009

Ну, в пакете проще всего было бы периодически проверять, не изменилась ли дата последнего изменения файла и / или его размер.

Вы можете получить и то, и другое:

for %%X in (myfile) do set size=%%~zX&set filetime=%%~tX

Затем вы можете кэшировать эти значения и сравнивать, изменились ли они с момента последней итерации. Использование задержки (возможно, несколько секунд) через

ping -n 11 localhost >nul 2>nul

(с задержкой 10 секунд) может помочь не проверять слишком часто.

Итак, это может выглядеть примерно так:

@echo off
setlocal
set FileName=MyPresentation.pptx
set FileTime=-
:loop
for %%X in (%FileName%) do (
    if %FileTime% NEQ %%~tX (
        rem just an example
        taskkill /f powerpnt.exe
        start %FileName%
    )
    set FileTime=%%~tX
)
rem wait 5 seconds before checking again
ping -n 6 localhost >nul 2>nul
goto :loop

В PowerShell код не выглядел бы слишком по-другому, за исключением того, что вы попадаете в соответствующие свойства немного проще:

$FileName = "MyPresentation.pptx"
$FileTime = Get-Date

# endless loop
for () {
    $file = Get-Item $FileName
    if ($FileTime -ne $file.LastWriteTime) {
        Get-Process powerpnt* | Stop-Process
        Invoke-Item $file
    }
    $FileTime = $file.LastWriteTime
    Start-Sleep 5
}
0 голосов
/ 05 октября 2009

Нашел это:

@echo off
if not "%~1"=="" echo Modified date of %~1 is %~t1

на Эксперты обмениваются . Может быть, это хорошая точка для начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...