Is there a way for using a batch file to find the default browser on my computer?
This code will set the Environment variable browser
to FirefoxURL
which gives you a good indicator:
@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%
It works by querying the registry to a text file then skipping the first two lines (useless for your purposes), then taking the text that starts at the 20th character of te remaining line. Which gives you FirefoxURL
bubble's answer has some caveats.
start "" explorer "protocol://your.complicated/url?foo=bar"
The only thing you have to escape is a double quote, and you escape it by typing it once more.
Works at least for protocols http://
, https://
and file://
(without query string). Doesn't work for ftp://
URLs (it opens them as a network drive).
First, the webpage has to start with 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
This can be fixed by prepending 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
One might e.g. think of enclosing the webpage in double quotes (to avoid misinterpretation of some characters). Then it fails and instead tries to open another CMD.exe with the given string as name:
rem FAILS!
start "http://google.com"
Okay, this is not a bug, just a mislead. This is the expected behavior. Let's fix it:
rem Works
start "" "http://google.com"
rem FAILS!
start "" "google.com"
The system cannot find the file google.com.
So we really have to provide an executable that should be launched. You can see the super-long answers here that succeed better or worse in getting the path to the default browser. But what's much simpler and bullet-proof is to use explorer
to launch the webpage. But since explorer decides on what app to launch based on the protocol, you have to use the protocol prefix. And that's it!
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"