выполнить exe, не зная полного пути - PullRequest
1 голос
/ 04 июля 2011

Мне нужно запустить приложение по имени Acad.exe, не зная его полного пути. этот путь, как известно, определяется при установке лицом, устанавливающим приложение.

как мне этого добиться?

Ответы [ 5 ]

3 голосов
/ 04 июля 2011

Обычно приложения хранят свое место установки в реестре, поэтому предпочтительным способом их поиска будет поиск соответствующего места в реестре.Таким образом, вы не сможете случайно запустить другую программу с тем же именем файла.

Предполагая, что acad.exe - это AutoCAD, на этой странице указаны места, которые вы должны искать .

1 голос
/ 06 июля 2011

Если эта acad.exe установка соответствует соглашению Windows, процесс установки создает специальный ключ в реестре:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

Если acad.exe определяется там с необходимыми параметрами, и его можно запустить из командного файла с помощью этой простой команды:

START acad.exe

Не нужно указывать полный путь, Windows получит его из соответствующей записи AppPath.

1 голос
/ 04 июля 2011

Попробуйте это на любом языке, который имеет интерфейс со слоем OLE2:

CreateDispatch("Autocad.Application")

В C ++:

::CoInitializeEx(NULL);
::CreateDispatch("AutoCAD.Application");

С пакетным сценарием:

  • Сохраните следующее под именем `start_autocad.vbs

    set objShell=CreateObject("Autocad.Application")
    objShell.Visible = TRUE
    
  • run cscript start_autocad.vbs.
0 голосов
/ 04 июля 2011

Вместо того, чтобы придумывать свой собственный метод, вы можете просто воспроизвести поведение CMD.EXE, ища ACAD.EXE в% PATH%.

, попробуйте это в качестве примера, чтобы начать ...

:inpath
echo %~$PATH:1
echo %~dp$PATH:1
goto :eof

вызвать его таким образом

call :inpath acad.exe
0 голосов
/ 04 июля 2011

Предполагая, что он находится на диске C :, вы можете сделать:

@echo off
c:
cd \
for /f "delims=" %%a in ('dir /s /b acad.exe') do set exeLcn=%%a
start %exeLcn%
...