【发布时间】:2020-02-18 11:54:31
【问题描述】:
我希望批处理文件中的命令仅在过去 15 分钟内未运行时才执行。为此,我可以创建一个“last_run”文件来记录上次运行的时间。
我卡住的地方是将上次修改的时间与当前时间进行比较,如果上次修改时间,则采取行动。
这是我当前的代码:
@echo off
set filename=last_run.txt
if not exist %filename% (
rem NOT EXISTS, CREATE FILE THEN PRINT THE LIST
echo.>"%filename%"
GOTO PrintList
) else (
rem FILE EXISTS, GET TIME LAST MODIFIED
FOR %%? IN (%filename%) DO (set filetime=%%~t?)
echo %filetime%
rem IF TIME LAST MODIFIED > 15 MINS PRINT THE LIST
if timediff??(%filetime%, current) > 15 mins {
GOTO PrintList
} else {
GOTO End
}
)
:PrintList
rem PRINT THE LIST
echo now print the list
rem WRITE TO THE FILE TO UPDATE TIME LAST MODIFIED
echo.>"%filename%"
GOTO End
:End
【问题讨论】:
-
这是我之前为此目的编写的脚本。通过一些修改,可以将分钟包括在比较中。微小的调整将允许程序在您的日志文件上运行而无需输入
https://pastebin.com/hNCgcLLa该脚本演示了可用于在当前时间和文件时间之间创建可比较的日期时间信息的转换和子字符串修改 -
关于示例脚本中的比较运算符,
GTR GEQ EQU LEQ LSS和If "%Var%"=="value"或If Not "%Var%"=="value"有效,<和>无效 - 在批处理中它们是重定向字符。
标签: datetime batch-file last-modified