![]() |
Определить путь к исполняемому файлу и запустить его.
Переменная %ProgramFiles% возвращает путь к «Program Files» на системном разделе.
Каким образом можно определить путь к исполняемому файлу(букву диска), если он установлен в папке «Program Files» на другом разделе и реализовать подобный сценарий: Код:
If exist "%ProgramFiles%\Prog\Prog.exe" ( |
Lucretius, достаточно взять первые два символа строки, в которую раскрывается переменная %ProgramFiles%, чтобы узнать букву диска:
Код:
@echo %programfiles:~0,2% |
deviance, Это мне известно, но мне надо другое. Вероятно, я не совсем точно изложил суть задачи. Мне необходимо сделать батник, который найдёт программу по её имени и запустит её, вне зависимости от того, на каком диске она находиться. Директория установки по умолчанию: «\Program Files\Prog\». Установку в папку НЕ назначенную по умолчанию я не рассматриваю.
Предположим, что на машине пользователя существует две папки «Program Files» на дисках С и D, допустим, что программа установлена в «D:\Program Files\Prog\» , а переменная %ProgramFiles% возвращает «C:\Program Files» так вот, нужно, чтобы скрипт нашёл программу и запустил её. Выше приведённый скрипт я привёл в пример, чтобы объяснить конечную цель. |
Lucretius, примерно так?
Код:
for %%a in (a,b,c,d,e,f) do if exist "%%a:\Program Files\Prog\proga.exe" start "" "%%a:\Program Files\Prog\proga.exe" |
sov44, Да, это то, что нужно. Спасибо!
|
Возникла, следующая проблема: добавил в список все 26 букв, при обращении к устройствам со съёмными носителями (напр. картридер) появляются окна с ошибкой "В устройстве нет диска. Вставьте диск в устройство". Ищу другой вариант...
|
тогда наверное так
Код:
for /f "skip=1" %%a in ('2^>nul WMIC LogicalDisk WHERE "DriveType='3'"') do ( |
Что-то не так. Команда «WMIC LogicalDisk WHERE "DriveType='3'"» в консоли работает, выводиться информация о логических дисках, но в составе приведённого Вами скрипта(bat-файл) все буквы дисков определяются как "0"
Код:
C:\Windows\system32>(if exist "0\Program Files\Prog\proga.exe" start "" "0\Progr |
Причём буквы съёмных "DriveType='2' и привода "DriveType='5' определяет!?
|
sov44, Ваш скрипт заработал с небольшой поправкой:
Код:
for /f "skip=1" %%a in ('wmic LogicalDisk where "DriveType=3" get Name') do ( |
Подскажите, возможно ли включить в скрипт:
Код:
for %%a in (a,b,c,d,e,f) do if exist "%%a:\Program Files\Prog\proga.exe" start "" "%%a:\Program Files\Prog\proga.exe" Дело в том, что оговоренная выше wmic.exe отсутствует в XP home. Может существуют сторонние утилиты(от Nirsoft и т.д.) способные решить поставленную задачу? |
Всё, разобрался. Сделал так:
Код:
For /f "tokens=3,*" %%i In ('cmd /c echo list volume ^| diskpart ^|^ |
Время: 10:18. |
Время: 10:18.
© OSzone.net 2001-