PDA

Показать полную графическую версию : [решено] Быстрый запуск программ из командной строки


jah
16-09-2015, 21:59
Здравствуйте!

Windows 7
Решил переместить весь портативный софт на отдельный раздел диска, чтобы при переустановке системы по минимуму затрагивать его.
Для того, чтобы быстро запускать эти программы из окна Выполнить, идеально подошёл вариант с App Paths:
создаём reg-файл, по ходу добавления программ добавляем нужные ключи туда,
после переустановки системы один раз запустить это reg-файл и из окна Выполнить можно будет запускать эти программы по короткому имени.
Получится нечто типа
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyAppName.exe]
@="D:\\PortableApps\\AppName.exe"
...

либо локально для текущего пользователя в ветке
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths


Осталось определить как лучше сделать возможность быстро запускать эти программы из командной строки.

Ничего больше в голову не пришло как использовать для этого переменные окружения.
Можно создать некоторую переменную окружения например, PortableAppsPath, добавить её в Path и писать туда пути к каталогам с исполнимыми файлами программ.
Можно даже поместить всё это в тот же самый reg-файл в одну из веток

HKEY_CURRENT_USER\Environment
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment


Но получается не очень хорошо, так как
- полностью затираем результат достигнутый при помощи App Paths, который как раз призван был избавится от засорения Path
- запускать придётся по исходному имени (а оно иногда длинное) и тут либо переименовывать запускные файлы, либо делать ссылки
- размер переменных окружения ограничен, то есть рано или поздно место закончится
Попутно вопрос: каков максимальный размер переменной окружения в windows 7? так и осталось 32767 2-байтных символа вместе с её именем, как в xp (если эта информация верная)?

Чтобы уменьшить размер содержимого, помещаемого в переменную PortableAppsPath, можно создать дополнительный каталог, добавить путь к нему в Path и помещать в него ссылки на исполняемые файлы программ.
Тут придётся учесть ряд моментов:
- приходится дополнительно создать каталог и помещать туда ссылки
- от переменной среды PortableAppsPath полностью не избавляемся, хотя бы потому, что есть наборы утилит (например, Sysinternals) и других программ, у которых далеко не единственный исполняемый файл в каталоге и делать на каждый из них ссылку выглядит неразумным
- жёсткие ссылки не всегда подходят, так как часто portable launcher начинает отсчитывать пути от каталога, в котором находится, поэтому по ссылке в другом каталоге он просто не найдёт то, что хотел
- чтобы при запуске по ссылке из командной строки не писать каждый раз расширение .lnk придётся добавить его в pathext
- ...

Как можно более разумно решить эту проблему?

Спасибо!

jah
17-09-2015, 20:14
Осталось определить как лучше сделать возможность быстро запускать эти программы из командной строки. »
Чтобы ничего не городить со ссылками, остановился на
- создании переменной среды PA (PortableApps)
- создании переменной среды PortableAppsPath с добавлением туда каталогов с наборами программ (например, D:\PortableApps\Sysinternals)
- обе добавил в Path

Тем самым охватил быстрый запуск из окна Выполнить программ из каталогов с наборами программ,
а из cmd: cd /d %pa% -> cd s + tab-ом до нужного каталога -> AppName, в принципе, терпимо




© OSzone.net 2001-2012