批处理文件以查找已安装浏览器的列表

use*_*033 2 batch-file

我需要通过运行 .bat 文件来检查任何 Windows 系统中的可用浏览器。批处理文件应该能够检查系统中是否安装了 Firefox 和 Chrome 或任何其他浏览器。否则我想打开默认浏览器。

if exist "C:\Program Files(x86)\Mozilla Firefox\firefox.exe" start firefox.exe
Run Code Online (Sandbox Code Playgroud)

这是执行此操作的一种方法,但如果在其他位置完成安装,则它不起作用。

Dav*_*ann 5

我建议使用HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet密钥。它列出了自己在系统上注册的 Web 浏览器客户端,并提供了默认值以及在系统上可以找到每个客户端的位置。

有关更多详细信息,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/dd203067(v=vs.85).aspx

例子:

这只是我拼凑起来的一个例子来说明如何使用这些信息。根据您的需要或根据您的要求进行调整。

@echo off
setlocal EnableDelayedExpansion
:Menu
echo 32-bit
set "Count=1"
for /f "tokens=2,*" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Clients\StartMenuInternet" /ve 2^>nul') do set "Default=%%B"
for /f "skip=3 delims=" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Clients\StartMenuInternet" 2^>nul') do (
    if "%%~nxA"=="%Default%" (
        echo !Count!. %%~nA [Default]
    ) else (
        echo !Count!. %%~nA
    )
    set /a "Count+=1"
)
echo.
echo 64-bit if 32-bit above, else 32-bit
for /f "tokens=2,*" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet" /ve 2^>nul') do set "Default=%%B"
for /f "skip=3 delims=" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet" 2^>nul') do (
    if "%%~nxA"=="%Default%" (
        echo !Count!. %%~nA [Default]
    ) else (
        echo !Count!. %%~nA
    )
    set /a "Count+=1"
)
echo.
:Input
set "Input="
set /p "Input=> Select a Browser: "
if not defined Input goto Input
set "Input=%Input:"=%"
set "Count=1"
:: NOTE if the browser name is typed out and matching on the name then the last match will be chosen.
:: As it is currently setup this means that the 32-bit version will always win on a name match.
for /f "skip=3 delims=" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet" 2^>nul') do (
    if /i "%Input%"=="%%~nA" set "Choice=%%~A"
    if "%Input%"=="!Count!" set "Choice=%%~A"
    set /a "Count+=1"
)
for /f "skip=3 delims=" %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Clients\StartMenuInternet" 2^>nul') do (
    if /i "%Input%"=="%%~nA" set "Choice=%%~A"
    if "%Input%"=="!Count!" set "Choice=%%~A"
    set /a "Count+=1"
)
if not defined Choice goto Menu
for /f "tokens=2,*" %%A in ('reg query "%Choice%\shell\open\command" /ve 2^>nul') do set "Command=%%~B"
start "Browser" "%Command%"
endlocal
echo Done
pause>nul
Run Code Online (Sandbox Code Playgroud)