Кнопка для запуска приложения с флешки

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Кнопка для запуска приложения с флешки

Сообщение laburj »

Подскажите пожалуйста с кнопкой
Ситуация:
часто подключаю разные флешки, буква диска которым присваивается произвольно. Необходимо запускать программы по одному и тому же адресу, например ?:\aaa\bbb\ccc\ddd.exe, где "?" - буква диска, которая только и меняется.
Хотелось бы кнопку на панели инструментов, которая позволяла бы открывать программу по заданному пути, где буква диска бралась из открытой левой вкладки.
Спасибо
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj писал(а):где буква диска бралась из открытой левой вкладки
Какое-то извращение. Это так принципиально?
Можно перебрать все внешне подключённые диски и в них искать нужное. Либо брать последнюю букву.
И это, конечно, не из области общих вопросов..
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher писал(а):Какое-то извращение. Это так принципиально?
Можно перебрать все внешне подключённые диски и в них искать нужное. Либо брать последнюю букву.
И это, конечно, не из области общих вопросов..
Если можно так, то было бы гораздо удобнее, я просто предположил, что взять букву диска из пути текущей вкладки будет проще
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj писал(а):Если можно так
Так - это как?
laburj писал(а): из пути текущей вкладки
Написано было:
laburj писал(а):из открытой левой вкладки
Левая ещё не значит текущая или активная.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher писал(а):Так - это как?
В идеале так:
Flasher писал(а):Можно перебрать все внешне подключённые диски и в них искать нужное.
Flasher писал(а):Левая ещё не значит текущая или активная.
Согласен, признаю свою неточность
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj писал(а):В идеале так:
Т.е. брать первый попавшийся внешний диск, а не последний?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Да, первый попавшийся, у меня их обычно не больше 3х и одновременно не бывает подключенных флешек, где есть программы, которые таким способом я хочу запустить.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Код: Выделить всё

'============================================================
' Запуск первой существующей программы из внешнего накопителя

' Параметр: <Путь без имени диска>
' Пример:   "\ProgramFolder\Program.exe"
'============================================================
If WScript.Arguments.Count > 0 Then
  Path = WScript.Arguments(0)
  With CreateObject("Scripting.FileSystemObject")
    For Each D In .Drives
      If D.DriveType = 1 Then
        If .FileExists(D & Path) Then
          CreateObject("WScript.Shell").Run """" & D & Path & """"
          Exit For
        End If
      End If
    Next
  End With
End If
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

laburj
Если и Тотал запускать с той же флэшки, то диск будет называться %COMMANDER_DRIVE%
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Serge Yolkin
TYVM, КЭП.
Ясно же, что флешек много, а Тотал уже запущен..
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

[mod="CaptainFlint"]Перенесено в Автоматизацию.[/mod]
Почему же, ё-моё, ты нигде не пишешь "ё"?
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher, большое спасибо! Всё работает!
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Re: Кнопка для запуска приложения с флешки

Сообщение Моторокер »

laburj писал(а):Необходимо запускать программы по одному и тому же адресу, например ?:\aaa\bbb\ccc\ddd.exe, где "?" - буква диска, которая только и меняется.
Если вкладка эта активная, почему сразу так не запускать?
\aaa\bbb\ccc\ddd.exe
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Можно запускать батником run_from_label.bat:

Код: Выделить всё

@echo off
if -%1==- echo Parameters: ^<drive_label^> <^path_to_run^> [^<parameters^>]
set drive_letter=
for %%d in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
	echo "*" | label %%d: 2>nul | find /I "%~1" >nul
	if not errorlevel 1 (
		start "" "%%d:\%~2" %3 %4 %5 %6 %7 %8 %9
		goto :EOF
	)
)
В кнопке тулбара прописать (на примере флешки с меткой MY_FLASH для запуска программы \Program\Program.exe при условии, что батник лежит в папке тотала):

Код: Выделить всё

Команда: "%COMMANDER_PATH%\run_from_label.bat"
Параметры: MY_FLASH Program\Program.exe
В батнике в скобках команды for задаются буквы дисков, для которых метка сравнивается с заданной. Можно убрать ненужные буквы и изменить порядок букв, поставив наиболее вероятные буквы раньше. Сравнение производится нестрогое, т.е. ищется первая буква диска, метка которой содержит указанный текст.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Думаешь, твой батник окажется быстрее моего скрипта?
Сократи хотя бы список через fsutil fsinfo drives.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить