Eu realmente me deparei com essa questão ontem. Eu estava procurando a resposta sozinho. Não é grande coisa se você tiver apenas uma janela aberta (uma simples linha de tarefa sem o / f para que o navegador possa fechar de forma limpa) mas assim que você tiver duas janelas ou mais, ela se torna mais complicada porque o comando taskkill só disparou uma janela de cada vez (perdendo efetivamente as abas da janela a menos que seja a última a ser fechada).
Acabei escrevendo uma combinação de scripts cmd / vbs para fechar o Firefox de maneira limpa. Os scripts detectarão se o prompt da Senha Mestra está aberto e fechá-lo (evite que o aviso interfira no script FFQuit), o script FFQuit ativará FF e enviará um toque de tecla Alt-F para abrir o menu Arquivo e um X para sair do Firefox.
Lá você tem uma saída rápida e limpa, todas as janelas voltam ao reiniciar. Há a opção de reiniciar o FF também (apenas desmarque a seção relevante):
Parte 1: o script cmd de encapsulamento: quitFF.cmd
set FFexec=%programfiles(x86)%\Mozilla Firefox\firefox.exe set ERRORLEVEL= :: Check if that annoying Master Password prompt is open and close it tasklist /FI "WINDOWTITLE eq Password Required" 2>NUL | find /I /N firefox.exe">NUL IF "%ERRORLEVEL%"=="0" MPWDclose.vbs FFQuit.vbs ::Optional Restart Firefox - ping is just a sneaky way of getting sleep functionality ::Uncomment REM to activate REM ping 1.0.0.0 -n 1 -w 2000 > nul REM start "" "%FFexec%" & exit
Parte 2: MPWDclose.vbs
Set MPWDclose = WScript.CreateObject("WScript.Shell") WScript.Sleep 250 MPWDclose.AppActivate("Password Required") WScript.Sleep 250 MPWDclose.Sendkeys "{ESC}" WScript.Sleep 50 WScript.Quit
Parte 3: FFQuit.vbs
Set FFquit = WScript.CreateObject("WScript.Shell") WScript.Sleep 250 FFquit.AppActivate("- Mozilla Firefox") WScript.Sleep 250 FFquit.Sendkeys "%F" WScript.Sleep 100 FFquit.Sendkeys "x" WScript.Quit