我有一個具有挑戰性的問題。
我對批處理腳本的要求,
- 檢查火狐瀏覽器是否正在運行..
- 如果它正在運行批處理腳本將播放音樂。
- 腳本將保持喚醒狀態,直到瀏覽會話完成且用戶關閉瀏覽器。(從系統啟動到關機,腳本永遠不會退出。意味著每次和每次用戶打開 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
此腳本僅第一次運行,不會回圈。有人可以幫忙嗎?
uj5u.com熱心網友回復:
這是一種可能的解決方案:
@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 秒的用戶輸入。
需要等待CHOICE或TIMEOUT(或PING)的時間來暫停批處理腳本執行一段時間,如五秒,否則 Windows 命令處理器cmd.exe將盡可能快地一次又一次地執行批處理檔案中的命令,這意味著cmd將使用一個CPU 的核心 100% 并且會進行大量的檔案系統訪問,因為一次又一次地啟動可執行的TASKLIST,執行之間不再有任何暫停。這對運行音樂播放器的整個計算機性能不利,Firefox也希望 CPU 性能和對檔案系統的訪問。
最好將啟動Firefox的快捷方式替換為以cmd.exe命令列開頭的快捷方式,以將音樂播放器作為單獨的行程啟動,運行Firefox并等待其自行終止,然后終止音樂播放器。這樣效率會更高。
要了解使用的命令及其作業原理,請打開命令提示符視窗,在那里執行以下命令,并仔細閱讀為每個命令顯示的所有幫助頁面。
cls /?choice /?echo /?endlocal /?find /?goto /?if /?set /?setlocal /?start /?taskkill /?tasklist /?timeout /?title /?
也可以看看:
- 有關使用命令重定向運算子的Microsoft 檔案,以解釋
>nul、2>nul和|。 - Single line with multiple commands using Windows batch file for an explanation of conditional operator
||.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/354381.html
標籤:批处理文件
