Показать полную графическую версию : Узнать версию Chrome браузера
papacoca
30-08-2020, 18:33
Добрый день.
1. Узнать какая версия chrome браузера и именно в таком виде - 83, 84, 85
2. Если версия браузера не 83, 84 или 85 то завершить скрипт без действий.
3. Если версия браузера 83 то открыть C:\83.txt, если версия 84 то открыть C:\84.txt, если версия 85 то открыть C:\85.txt. Спс
megaloman
30-08-2020, 19:39
@Echo Off
cls
Set "F83=Z:\Box_In\83.txt"
Set "F84=Z:\Box_In\84.txt"
Set "F85=Z:\Box_In\85.txt"
FOR /F "usebackq skip=2 tokens=3 delims=. " %%i IN (`2^>nul reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome" /V DisplayVersion`) DO Set "Vrs=%%i"
Echo Google Chrome DisplayVersion=%Vrs%
If "%Vrs%"=="83" Start " " notepad "%F83%"
If "%Vrs%"=="84" Start " " notepad "%F84%"
If "%Vrs%"=="85" Start " " notepad "%F85%"
Pause
Exit /B
greg zakharov
30-08-2020, 22:28
Всё можно решить в одну строку.
curl -s https://2ip.ru | sed -nr "s/.*chrome ([0-9]{2}).*/\1/Ip" | findstr /rc:"8[3-5]" | sed -r "s/(.*)/C:\\\1.txt/" | cmd>nul
Сперва curl'ом запрашиваем страницу 2ip.ru, оттуда забираем мажорную версию Chrome, которую в свою очередь передаём далее по конвейеру findstr, чтобы удостовериться в корректности версии (c 83 по 85), и если совпадение есть будет открыт соответствующий файл; в противном случае ничего не произойдёт.
Foreigner
31-08-2020, 00:17
Я не пользуюсь хромом, что выдает?
chrome --version
В огнелисе, для примера, под виндоус работает с пайпом, под линукс без него:
> firefox -v | more
Mozilla Firefox 80.0
что выдает?
chrome --version»
У меня — ничего. Открывается Google Chrome. И «-product-version» аналогично. Это ж не Chromium.
Всё можно решить в одну строку. »
А если нет интернета или сайт недоступен? Мой вариант
(((Get-Item "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe").VersionInfo).ProductVersion).split('.')[0]
А дальше как угодно, хоть if else
Это ж не Chromium. »
Не думаю что дело в том что это хромиум/хром. Запускалось через win+r или из cmd? Опять же нет винды под рукой. но под линухом успешно возвращается версия и с хромиума и с хрома.
да, я понимаю что это больше досужий интерес, чем к теме топика, но интересно же.
curl'ом запрашиваем страницу 2ip.ru, оттуда забираем мажорную версию Chrome »
очевидно же, что curl не отдаст в заголовке запроса версию установленного браузера, а 2ip.ru соответственно, его не прочитает и не вернёт
Vadikan, версию exe можно и через wmi получить, т.е. решить на bat не уходя в офтопик:
wmic datafile where "name='c:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'" get version
greg zakharov
31-08-2020, 17:01
Давайте по-порядку.
А если нет интернета или сайт недоступен?
Ключевое - если, а оно, как известно, из области вероятности. Вероятностных соотношений, к слову, в данном случае более двух (точных данных нет, так что имеем уравнение с параметрами). Конечно интернета может и не быть (что-то у провайдера, сетевой шторм на каком-либо коммутационном узле или просто какаой-либо из пакетов отбрасывается из-за невалидной контрольной суммы), однако снова - какова вероятность того? Ни вы, ни кто-либо иной не знает. Что до вашего ответа "а дальше как угодно", - это непрофессионально.
([version](ls $env:programfiles -r -fi chrome.exe -ea 0).VersionInfo.ProductVersion).Major -match '^8[3-5]$' ? ."C:\$($matches[0]).txt" : 'FU!'
Но! Так как речь всё же о командных сценариях, то ваш вариант (ровно как и пример выше) перенаправляются в /dev/null, сколь не ущемлено было бы ваше самолюбие (и шарфик).
очевидно же, что curl не отдаст в заголовке запроса версию установленного браузера
Очевидно, что кто-то попросту не врубается что данные не берутся из заголовков запросов. Версия берётся из "голого" HTML, отдаваемого 2ip.ru (к слову у них есть REST API, но нужно регистрироваться, а делать этого не хочется).
версию exe можно и через wmi получить
Версию можно дёрнуть чем угодно. Хоть отладчиком.
cdb "C:\...\chrome.exe" -c "dx @$curprocess.Modules[0].Contents.Version.VersionInfo.FileVersion;q"
Хоть sigcheck.
sigcheck -nobanner -n "C:\...\chrome.exe"
Хоть strings.
strings -nobanner -n 10 "C:\...\chrome.exe" | sed -n "/FileVersion/{n;p}"
Однако, все эти способы (а также способы с PowerShell и wmic) упираются в наличие секции .rscr самого PE'шника. Если следовать теории "если" (зачинщик строчит телеграммы), то:
1) такой секции может и не быть
2) при сборке секция была объединена (сплайсинг) с какой-либо иной секцией
3) секция может быть, но данных о версии в ней нет
4) секция имеет альтернативное имя
5) вместо секции ресурсов используется DOS заглушка или легаси поля IMAGE_DOS_HEADER
Есть и прочие варианты, но не суть. Здесь упор именно на наличие секции ресурсов.
Вообще, развивая теорию "если" можно дойти до абсурда, в том числе признать поиск значений в реестре неправильными, а идентификацию браузера по User-Agent'у недостоверной в виду возможности его подмены (хотя на деле получить "вшитый" User-Agent не так уж и сложно даже при выключенном JavaScript).
К слову, забыл упомянуть, что после синхронизации curl с браузером по умолчанию, в _curlrc "оседает" дефолтный User-Agent, иначе говоря, проверка версии без инета будет такой:
curl -s "file:///%curl_home%\_curlrc" | sed -nr "s/.*chrome\/([0-9]{2}).*/\1/Ip"
Запускалось через win+r или из cmd? »
Из-под Far Manager'а :).
papacoca
01-09-2020, 07:13
wmic datafile where "name='c:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'" get version »
У меня Windows 10 и работает только этот вариант. Выводит версию chrome.
C:\Users\papacoca\Desktop>wmic datafile where "name='c:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'" get version
Version
85.0.4183.83
Как сделать его универсальным для c:\\Program Files (x86) и для c:\\Program Files
2. Если версия браузера не 83, 84 или 85 то завершить скрипт без действий.
3. Если версия браузера 83 то открыть C:\83.txt, если версия 84 то открыть C:\84.txt, если версия 85 то открыть C:\85.txt. Спс
greg zakharov
01-09-2020, 08:36
1) Использовать переменные окружения program* и where
2) for или через пайп и конструкцию set /p взять мажорную версию и передать её findstr
3) используя подобие тернарной операции, собрать из полученного значения путь
сколь не ущемлено было бы ваше самолюбие (и шарфик). »
зачинщик строчит телеграммы »
Очевидно, что кто-то попросту не врубается »
Модераториал: полегче на поворотах, плиз. См. ОПК 3.1
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.