首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows批处理文件-检查文件是否已修改

Windows批处理文件-检查文件是否已修改
EN

Stack Overflow用户
提问于 2009-10-05 15:02:11
回答 3查看 18.6K关注 0票数 1

我正在配置一台windows计算机以连续运行powerpoint演示文稿。ppt文件位于samba共享(windows文件共享)上,并将定期更新。我需要一种方法来使批处理文件,将重新启动的ppt幻灯片放映,如果该文件已被更改。批处理脚本将定期运行,并有望检查文件是否已更新,如果已更新,则重新启动幻灯片。

如果有一种方法可以在powershell中做到这一点,那也是可行的。

EN

回答 3

Stack Overflow用户

发布于 2009-10-05 15:07:39

好吧,在批处理中,我想到的最简单的方法是定期检查文件的最后修改日期和/或其大小是否已更改。

您可以通过以下方式获取这两种方法:

代码语言:javascript
复制
for %%X in (myfile) do set size=%%~zX&set filetime=%%~tX

然后,您可以缓存这些值,并比较它们自上次迭代以来是否已更改。使用延迟(可能是几秒钟)通过

代码语言:javascript
复制
ping -n 11 localhost >nul 2>nul

(延迟10秒)可以帮助您避免检查得太频繁。

因此,它可能看起来有点像下面的代码:

代码语言:javascript
复制
@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中,代码看起来并没有太大的不同,只是让你更容易找到相关的属性:

代码语言:javascript
复制
$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
}
票数 4
EN

Stack Overflow用户

发布于 2019-12-30 13:04:40

尝试下面的代码。它检查当前时间,并检查文件的最后修改时间。如果这两个值相同,则假定文件已被更改。

代码语言:javascript
复制
@echo off &setlocal

TITLE File Monitor

Set file=Test.txt

:CheckforAlter
Set modif_time=
Set allm=

cls
for /f "tokens=1-3 delims=:,. " %%A in ("%time%") do (
  set "Hour=%%A"
  set "Min=%%B"
  set "Sec=%%C"
)

set /a Hour = Hour %% 12
if %Hour%==0 set "Hour=12"

set "Allm=%Hour%:%Min%:%Sec%"

for /f %%i in ('"forfiles /m %file% /c "cmd /c echo @ftime" "') do set modif_time=%%i
echo.
echo.
IF %modif_time%==%Allm% (
echo File was altered.
start "" "%file%"
Timeout /t 1 >nul
)
echo file wasn't modified.
GOTO CheckforAlter
票数 1
EN

Stack Overflow用户

发布于 2009-10-05 15:05:37

找到了这个:

代码语言:javascript
复制
@echo off
if not "%~1"=="" echo Modified date of %~1 is %~t1

Experts exchange上。也许这是一个很好的起点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1520643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档