PDA

Показать полную графическую версию : проверка наличия файла в директории


icetanker
17-10-2014, 10:06
хочу написать ярлык,который бы проверял наличие браузера Mozilla Firefox и если его находил,то запускал нужный сайт,а если не находил,то запускал бы сайт в Internet Explorer.Посоветуйте,где можно почитать и какую функцию использовать? по каким лучше параметрам проверить наличие Firefox и Internet Explorer.

Georgio
17-10-2014, 13:29
Любой язык - проверка наличия файла в директории
проверял наличие браузера Mozilla Firefox »


Так что нужно проверять: наличие файла в директории или наличие установленной программы? Если нужно проверять наличие файла в директории, то какого файла и в какой директории?

icetanker
17-10-2014, 13:41
Georgio, нужно запускать сайт в Mozilla Firefox,а если его нету,то в Internet Explorer,независимо,есть ли другие браузеры и игнорируя браузер по умолчанию

Iska
17-10-2014, 22:41
На WSH:
Option Explicit

Const HKEY_LOCAL_MACHINE = &H80000002


Dim strUrl

Dim strCurrentVersion
Dim strPathToExe

Dim boolFound


strUrl = "http://www.ya.ru"

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\default").Get("StdRegProv")
boolFound = False

If .GetStringValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Mozilla\Mozilla Firefox", "CurrentVersion", strCurrentVersion) = 0 Then
If .GetStringValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main", "PathToExe", strPathToExe) = 0 Then
If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strPathToExe) Then
boolFound = True

WScript.CreateObject("WScript.Shell").Run """" & strPathToExe & """ """ & strUrl & """", 1, 0
Else
WScript.Echo "Can't find [" & strPathToExe & "]."
End If
Else
WScript.Echo "Can't get [PathToExe] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main] subkey of registry."
End If
Else
WScript.Echo "Can't get [CurrentVersion] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox] subkey of registry."
End If
End With

If Not boolFound Then
With WScript.CreateObject("InternetExplorer.Application")
.Visible = True
.Navigate strUrl
End With
End If

WScript.Quit 0

icetanker
18-10-2014, 23:23
Iska, токо почему то мозилла есть на компьютере,а он пишет Can't get [PathToExe] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main] subkey of registry
и не запускает в ней?почему?

Iska
19-10-2014, 02:16
почему? »
Потому что:
Can't get [PathToExe] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main] subkey of registry »
Во-первых, что-то не верится, что пишет именно так. Ну, никак не может. Нажмите Ctrl-C в окне сообщения и вставьте текст сюда.

Во-вторых, даже по приведённому можно предположить, что у Вас отсутствует. Там ведь написано, чего не хватает. Также сообщите, какая у Вас ОС, её разрядность, какая версия Firefox, как и где установлена.

icetanker
19-10-2014, 10:05
Iska, windows 8 64 bit,остальное на скрине
http://forum.oszone.net/attachment.php?attachmentid=118007&stc=1&d=1413698746

El Sanchez
19-10-2014, 14:31
почему? »
icetanker, доступ через WMI к 32-разрядным разделам реестра из 64-разрядной системы немного по-другому делается:

...
Dim objCtx

strUrl = "http://www.ya.ru"

Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
objCtx.Add "__ProviderArchitecture", 32

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\default", "", "", "", "", 0, objCtx).Get("StdRegProv")
...

icetanker, вариант №2:

@Echo Off
Set URL=google.ru

Start "" /MIN cmd /c "Start "" firefox.exe -new-window %URL%||Start "" iexplore.exe %URL%"

Iska
19-10-2014, 15:49
El Sanchez, чей код возврата воспримет «||» — от первого «start», от «cmd.exe», от второго «start» или от «firefox.exe» ;)?

А теперь вопрос серьёзней: на x64 «AppPath» един для x64 и x86 приложений? Насколько я понимаю, нет. Использует ли x64-приложение данные из x86 раздела «AppPath»?

El Sanchez
19-10-2014, 18:15
чей код возврата воспримет «||» — от первого «start», от «cmd.exe», от второго «start» или от «firefox.exe» »
Iska, от второго «start». Или я что-то не знаю? Смайлик как бы напрягает :).
на x64 «AppPath» един для x64 и x86 приложений? »
Iska, видимо, един, т.к. и х86-, и х64-приложения регистрируют себя в обоих разделах «App Paths».
Использует ли x64-приложение данные из x86 раздела «AppPath»? »
Iska, да, ведь разделы «App Paths» еще и синхронизированы.

Georgio
19-10-2014, 21:15
Пакетный файл:


@echo off

set "URL=http://ya.ru/"

(
for /f "delims=" %%i in ('
reg query "HKLM\SOFTWARE\Clients\StartMenuInternet" /s /f "command" /k /e^| findstr /ei "command"
') do (
for /f "delims=" %%j in ('
reg query "%%i" /f "*\firefox.exe*" /d^| findstr /irx "....*\\firefox\.exe[^\\]*"
') do (
set var=%%j
for /f "tokens=*" %%k in ('
call set /p"=%%var:*REG_SZ=%%"^<nul
') do (
start "" "%%~k" "%URL%"
)
)
)
)|| start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" "%URL%"

exit /b


.

Iska
19-10-2014, 21:37
Iska, от второго «start». Или я что-то не знаю? Смайлик как бы напрягает . »
И я не знаю, поскольку не проверял ;). «Но вопрос интересный» (с).

Iska, видимо, един, т.к. и х86-, и х64-приложения регистрируют себя в обоих разделах «App Paths».

Iska, да, ведь разделы «App Paths» еще и синхронизированы. »
Спасибо, ясно. Вот разбогатею, автомашину куплю с магнитофоном, пошью костюм с отливом — и в Ялту! новую, с кучей оперативной памяти, и заведу себе на виртуальной машине ОС всяческие для разных игрищ :lol:. А пока, увы, только чтением документации.




© OSzone.net 2001-2012