仅在Firefox打开时每10分钟复制一个文件的命令

时间:2015-11-24 08:16:14

标签: batch-file firefox command-line

我想在Firefox打开时每10分钟复制一个文件。 我不确定最好的方法是什么,但到目前为止,我创建了一个.bat,我希望链接到任务计划程序中的任务,每10分钟运行一次。

这是.bat

中的命令
copy "C:\Users\Me\Zotero\zotero.sqlite" "C:\Users\Me\Zotero\Zotero_Backup_sqlite\zotero_%date%.sqlite" 

但是,任务计划程序不允许我添加条件(=仅在firefox打开时运行),也不允许每10分钟运行一次任务。

所以这是我的问题:

  1. 如果.bat是一个很好的方法,我怎么能用这两个参数运行.bat?
  2. 如果.bat不是一个好方法,你会推荐什么方法?

1 个答案:

答案 0 :(得分:1)

您可以拥有这样的批处理文件:

@echo off
:loop
tasklist /FI "IMAGENAME eq firefox.exe" 2>NUL | find /I /N "firefox.exe">NUL
if "%ERRORLEVEL%"=="0" copy "C:\Users\Me\Zotero\zotero.sqlite" "C:\Users\Me\Zotero\Zotero_Backup_sqlite\zotero_%date%.sqlite"
timeout /t 600 /nobreak
goto loop

这将是一个独立的批处理脚本,您必须自己启动,或放入启动文件夹。

您也可以选择

@echo off
tasklist /FI "IMAGENAME eq firefox.exe" 2>NUL | find /I /N "firefox.exe">NUL
if "%ERRORLEVEL%"=="0" copy "C:\Users\Me\Zotero\zotero.sqlite" "C:\Users\Me\Zotero\Zotero_Backup_sqlite\zotero_%date%.sqlite"

并且每隔10分钟从任务调度程序中运行一次。

你也可以将它变成你的firefox shorcut并在程序不再活动时结束它,如下所示:

@echo off
set programName=firefox.exe
start %programName%
:loop
tasklist /FI "IMAGENAME eq %programName%" 2>NUL | find /I /N "%programName%">NUL
if "%ERRORLEVEL%"=="0"  copy "C:\Users\Me\Zotero\zotero.sqlite" "C:\Users\Me\Zotero\Zotero_Backup_sqlite\zotero_%date%.sqlite"
if "%ERRORLEVEL%"=="1" exit /b
timeout /t 600 /nobreak
goto loop