批处理文件检查firefox是否打开?

时间:2013-03-13 13:09:58

标签: batch-file

我想写一个批处理文件,如果firefox打开则每20秒检查一次,如果打开则不需要执行任何操作。如果firefox关闭,批处理文件需要强制在某个网页上打开它。这也需要是一个无声的批次..

到目前为止我已经尝试过了:

@echo off
Set WShShell = WScript.CreateObject("WScript.Shell")
tasklist /fi "firefox.exe" 2>NUL | find /i /n "firefox.exe">NUL
if %ERRORLEVEL%==1 goto nofirefox
cmd /C start firefox.exe -new-tab "google.com" 

2 个答案:

答案 0 :(得分:0)

你的代码是懒惰的(VBScript系列让我大吃一惊),但我知道你要去哪里。 tasklist命令缺失了一点。 tasklist /fi "imagename eq firefox.exe"将在任务列表中搜索firefox。你需要一个带有ping的循环标签,无法延迟20秒。

试试这个。

@echo off
setlocal

:loop
wmic process where name="firefox.exe" get name /format:list 2>NUL | find /i "firefox" >NUL || call :relaunch
ping -n 21 0.0.0.0>NUL
goto loop

:relaunch
rem echo %time% - starting Firefox
start "" firefox.exe -new-tab http://www.google.com/

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
:loop
TASKLIST /fi "imagename eq firefox.exe" |FIND /i "firefox.exe" >nul
IF ERRORLEVEL 1 START firefox.exe -new-tab "google.com"
choice /t 20 /d y /n >NUL
IF ERRORLEVEL 2 GOTO :EOF 
GOTO loop

N(或^C)将退出循环。

(在XP中,用

替换CHOICE ...和ERRORLEVEL 2行
PING -n 21 127.0.0.1 >nul  
if exists stopfile. del stopfile.&goto :eof

然后创建stopfile.以终止此批次)