每次在Windows 10中打开特定应用程序时播放音乐的批处理文件?

问题描述 投票:0回答:1

我有一个具有挑战性的问题。

我对批处理脚本的要求,

  1. 检查 Firefox 浏览器是否正在运行..
  2. 如果正在运行批处理脚本,则会播放音乐。
  3. 脚本将保持唤醒状态,直到浏览会话完成并且用户关闭浏览器。 (从系统启动到关机,脚本永远不会退出。意味着每次用户打开 Firefox 浏览器时始终保持清醒状态来播放音乐)

以下是我写的脚本,

@echo off

: loop
tasklist /fi "imagename eq Firefox.exe" |find ":" > nul
if errorlevel 1 (start "C:\Program Files\KMPlayer 64X\KMPlayer64" "C:\Users\UserName\Desktop\Apple.mp3") else (goto loop)
// no exit

该脚本仅第一次运行,不会循环。有人可以帮忙吗?

batch-file
1个回答
1
投票

这是一种可能的解决方案:

@echo off
title Firefox Watcher
setlocal EnableExtensions DisableDelayedExpansion
set "MusicPlay="

:Loop
%SystemRoot%\System32\tasklist.exe /FI "IMAGENAME eq Firefox.exe" /NH 2>nul | %SystemRoot%\System32\find.exe /I "firefox.exe" || goto NoFirefox

if defined MusicPlay goto WaitTime
start "" "%ProgramFiles%\KMPlayer 64X\KMPlayer64.exe" "%UserProfile%\Desktop\Apple.mp3"
if not errorlevel 1 set "MusicPlay=1"
goto WaitTime

:NoFirefox
if not defined MusicPlay goto WaitTime
%SystemRoot%\System32\taskill.exe /IM KMPlayer64.exe >nul 2>nul
set "MusicPlay="

:WaitTime
cls
%SystemRoot%\System32\choice.exe /C NY /N /T 5 /D N /M "Stop watching Firefox [N/y]?"
if not errorlevel 2 goto Loop
if defined MusicPlay %SystemRoot%\System32\taskill.exe /IM KMPlayer64.exe >nul 2>nul

endlocal

可以用于标签

WaitTime
下面的命令块也只是:

%SystemRoot%\System32\timeout.exe /T 5 /NOBREAK >nul
goto Loop

这会导致 5 秒超时,且不会提示用户停止观看 Firefox,而在再次运行 Firefox 时仅等待最多 5 秒的用户输入检查。

需要使用 CHOICETIMEOUT(或 PING)等待一段时间才能暂停批处理脚本执行一段时间(例如五秒),否则 Windows 命令处理器

cmd.exe
将再次执行批处理文件中的命令,并且再次尽可能快,这意味着
cmd
将 100% 使用 CPU 的一个核心,并且会进行大量文件系统访问,因为一次又一次地启动可执行文件 TASKLIST,而在执行之间没有任何暂停。这对于运行音乐播放器的整个计算机性能不利,并且 Firefox 还需要 CPU 性能和对文件系统的访问。

最好将启动 Firefox 的快捷方式替换为通过命令行启动

cmd.exe
的快捷方式,将音乐播放器作为单独的进程启动,运行 Firefox 并等待其自行终止,然后终止音乐播放器。这样效率会更高。

要了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。

  • cls /?
  • choice /?
  • echo /?
  • endlocal /?
  • find /?
  • goto /?
  • if /?
  • set /?
  • setlocal /?
  • start /?
  • taskkill /?
  • tasklist /?
  • timeout /?
  • title /?

另请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.