Подтвердить что ты не робот

Batch - Браузер по умолчанию?

Есть ли способ использовать пакетный файл для поиска браузера по умолчанию на моем компьютере?

4b9b3361

Ответ 1

Если вы ищете решение Windows.bat, это должно работать в Windows 2000 и более поздних версиях:

reg QUERY HKEY_CLASSES_ROOT\htmlfile\shell\open\command /ve

Результат (на моем компьютере с Windows)

HKEY_CLASSES_ROOT\htmlfile\shell\open\command
(Default)    REG_SZ    "C:\Program Files (x86)\Internet Explorer\iexplore.exe" -nohome

Для получения дополнительной информации см. справку REG.EXE:

REG /?

Ответ 2

Просто используйте

запустите www.google.com

Смотрите здесь

Ответ 3

Невозможно сделать это 100% правильным в пакетном файле, поскольку команда по умолчанию может поступать из COM-объекта, а не из строки в реестре (MayChangeDefaultMenu заставит IContextMenu вызываться для двойного щелчка и может изменить действие по умолчанию)

Вот какой код, который пытается сделать правильную вещь (резервный глагол открыт, это действительно должен быть первый подраздел, но Мне не хотелось иметь дело с этим)

@echo off
setlocal ENABLEEXTENSIONS
set progid=htmlfile&set verb=open&set browsercmd=
FOR /F "skip=2 tokens=2 delims=_" %%a IN ('2^>nul REG QUERY "HKCR\.html" /ve^|find /V ""^|find /V "HKEY_"') DO FOR /F "tokens=1,*" %%b IN ("%%~a") DO if not "%%~c"=="" set progid=%%~c
FOR /F "skip=2 tokens=2 delims=_" %%a IN ('2^>nul REG QUERY "HKCR\%progid%\shell" /ve^|find /V ""^|find /V "HKEY_"') DO FOR /F "tokens=1,*" %%b IN ("%%~a") DO if not "%%~c"=="" set verb=%%~c
FOR /F "skip=2 tokens=2 delims=_" %%a IN ('2^>nul REG QUERY "HKCR\%progid%\shell\%verb%\command" /ve^|find /V ""^|find /V "HKEY_"') DO FOR /F "tokens=1,*" %%b IN ("%%~a") DO if not "%%~c"=="" set browsercmd=%%c

echo.DefaultBrowser=%browsercmd%

Этот код, вероятно, имеет проблемы, но по крайней мере он пытается найти правильный глагол. Вы также должны иметь дело с тем, что возвращаемая строка может содержать "% 1".

Если все, что вы действительно хотите сделать, это открыть URL-адрес, все, что вам нужно, это start http://example.com Если вы хотите открыть браузер, но не конкретный URL-адрес, может работать только уродливый хак вроде start "" http://about:blank.

Ответ 4

Надеюсь, это поможет кому-то. Мне нужно было запустить браузер по умолчанию с помощью html файла.

@echo off
setlocal

rem setup a default browser in case we fail
set default_browser=C:\Program Files\Internet Explorer\iexplore.exe

rem look in the HKEY_CLASSES_ROOT\htmlfile\shell\open\command registry for the default browser
for /f "tokens=*" %%a in ('REG QUERY HKEY_CLASSES_ROOT\htmlfile\shell\open\command /ve ^| FIND /i "default"') do (
   set input=%%a
)
setlocal enableDelayedExpansion

rem parse the input field looking for the second token
for /f tokens^=^2^ eol^=^"^ delims^=^" %%a in ("!input!") do set browser=%%a

setlocal disableDelayedExpansion

rem this may not be needed, check if reg returned a real file, if not unset browser
if not "%browser%" == "" if not exist "%browser%" set browser=
if "%browser%"=="" set browser=%default_browser%
"%browser%" index.html
endlocal

Ответ 5

Ответ Andy E, похоже, не работает для меня, он открывает IE вместо Chrome.
Но, если я использую http вместо htmlfile, он это делает. Вот так.

reg QUERY HKEY_CLASSES_ROOT\http\shell\open\command /ve

Ответ 6

Этот код установит переменную среды browser в FirefoxURL, которая даст вам хороший индикатор:

@ECHO OFF
REG QUERY HKCU\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice > browser.txt
FOR /F "skip=2 tokens=*" %%G IN (browser.txt) DO ( SET browser=%%G )
SET browser=%browser:~20%
ECHO Is: %browser%

Он работает, запрашивая реестр в текстовом файле, а затем пропускает первые две строки (бесполезные для ваших целей), а затем принимает текст, начинающийся с 20-го символа оставшейся строки. Что дает вам FirefoxURL

Ответ 7

Ответ на пузырь имеет некоторые оговорки.

Это то, что работает в гораздо большем числе случаев:

start "" explorer "protocol://your.complicated/url?foo=bar"

Единственное, что вам нужно убежать, это двойная цитата, и вы избегаете ее, набрав ее еще раз.

Работает как минимум для протоколов http://, https:// и file:// (без строки запроса). Не работает для URL ftp:// (он открывает их как сетевой диск).


Случаи отказа принятого ответа

Сначала веб-страница должна начинаться с www.

rem Works
start www.google.com

rem FAILS!
start google.com
The system cannot find the file google.com

rem FAILS!
start translate.google.com
The system cannot find the file translate.google.com

Это можно исправить добавлением http://

rem Works
start http://google.com

rem Works even for file:// protocol
start file://C:/test/main.html

rem Works - you can even pass QSA
start http://google.com?foo=bar

rem FAILS! outch, you have to escape ampersands
start http://google.com?foo=bar&baz=baz
'baz' is not recognized as an internal or external command, operable program or batch file.

rem FAILS! but QSA only works for http/s URLs; for file:// protocol, it is ignored
start file://D:/Programování/lumix-link/Control.html?foo=bar
rem opens file://D:/Programování/lumix-link/Control.html

Можно было бы, например, подумайте о включении веб-страницы в двойные кавычки (во избежание неправильной интерпретации некоторых символов). Затем он терпит неудачу и вместо этого пытается открыть другой CMD.exe с указанной строкой как имя:

rem FAILS!
start "http://google.com"

Хорошо, это не ошибка, просто вводящий в заблуждение. Это ожидаемое поведение. Пусть это исправить:

rem Works
start "" "http://google.com"

rem FAILS!
start "" "google.com"
The system cannot find the file google.com.

Поэтому нам действительно нужно предоставить исполняемый файл, который должен быть запущен. Вы можете увидеть сверхдлинные ответы здесь, которые преуспевают лучше или хуже в получении пути к браузеру по умолчанию. Но что еще проще и пуленепробиваемо использовать explorer для запуска веб-страницы. Но так как исследователь решает, какое приложение запускаться на основе протокола, вы должны использовать префикс протокола. И что это!

rem FAILS!
rem start "" explorer "google.com"

rem Works
rem start "" explorer "http://google.com"

rem Works
rem start "" explorer "http://google.com?foo=bar"

rem FAILS! QSA still not supported on file:// URLs
rem start "" explorer "file://C:/test/main.html?foo=bar"