datetime - 将当前时间与 Windows 批处理文件中上次修改的文件日期时间进行比较

标签 datetime batch-file last-modified

我希望批处理文件中的命令仅在过去 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

最佳答案

使用 的另一个实现来自您的 :

@Echo Off
Set "filename=last_run.txt"
Set "minutes=15"
If Not Exist "%filename%" GoTo :PrintList
"%__APPDIR__%WindowsPowerShell\v1.0\powershell.exe" -NoProfile If(((Get-Date)-(Get-Item ".\%filename%").LastWriteTime).Minutes -LT %minutes%){Exit 1}
If ErrorLevel 1 Exit /B
Rem Your payload below here.

:PrintList
CD.>"%filename%"

如果您愿意接受运行此代码的 PC 将始终在 %PATH%%PATHEXT% 中具有适当的条目,您可以更改“%__APPDIR__%WindowsPowerShell\v1.0\powershell.exe”PowerShell

关于datetime - 将当前时间与 Windows 批处理文件中上次修改的文件日期时间进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60280334/

相关文章:

java - 使用 Java 8 lambda 表达式,按内部列表的属性过滤对象列表

powershell - .Bat 文件无法运行 powershell 7

batch-file - bat 文件命令 - 如何剪切文件和替换现有文件

.htaccess - mod_rewrite RewriteCond 基于 Last-modified? (.htaccess)

javascript - 是否有一个 javascript 函数返回指定文件的最后修改日期?

python - 将字母数字值转换为日期

python - 查找天数差异(与当前日期比较)

python - Pandas 循环自定义日期(月年)到(月年+N)进行绘图

batch-file - 如何在Windows批处理中正确排列记录?

Android 联系人合约 : Last Modified Time