1

Тема: CMD/BAT: относительные пути в lnk-ярлыках

Бывает, нужно сделать ярлык в корне флешки для запуска portable-софта, чтобы этот ярлык не зависел от буквы диска устройства, или что-то подобное.
Работает следующим образом. "Рабочая папка" в ярлыке должна быть пуста, а строка запуска примерно такая:

%windir%\system32\cmd.exe /C start /B /D .\Portable .\Portable\RDP\portableRDP5.exe

В примере последний параметр — относительный путь к конкретному исполняемому файлу на съёмном флеш-диске.
Интересно, что и как здесь можно улучшить или "выпрямить", сделать изящнее.

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

2

Re: CMD/BAT: относительные пути в lnk-ярлыках

Корневой каталог без указания буквы диска, это просто левый слэш. Т.е. должно, по идее, работать просто так:

\Portable\RDP\portableRDP5.exe

А рабочую папку в ярлыке указать как \Portable .

3

Re: CMD/BAT: относительные пути в lnk-ярлыках

Нет, начальный слэш мгновенно интерпретируется как "C:\", даже сохранить ярлык не получается.

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

4

Re: CMD/BAT: относительные пути в lnk-ярлыках

OFF: А что-либо, наподобие PStart не пробовали пользовать? Я её, кстати, пользую даже на стационаре — из-за встроенного в неё поиска по ярлыкам «Главного меню».

5

Re: CMD/BAT: относительные пути в lnk-ярлыках

Нет, PStart не пробовал. Сама "проблема" не так уж велика, и есть интерес решить её просто, без дополнительного софта. Впрочем, оно как бы и решено уже .

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

6

Re: CMD/BAT: относительные пути в lnk-ярлыках

Ну я, собственно, на С: и пробовал ярлык править, всё сохраняется. Флэшки, к сожалению, нету, чтоб попробовать. Тогда, наверно, только сократить строку путём использования %comspec%.

%comspec% /C start /B /D .\Portable .\Portable\RDP\portableRDP5.exe

7

Re: CMD/BAT: относительные пути в lnk-ярлыках

Думаю что наилучший вариант:

%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Portable\RDP\portableRDP5.exe"

8

Re: CMD/BAT: относительные пути в lnk-ярлыках

Спасибо, последний вариант от YMP работает, а у Аскет ещё красивее: не появляется окно интерпретатора.

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

9

Re: CMD/BAT: относительные пути в lnk-ярлыках

Коллеги, по-моему это надо в Коллекцию. Я не прав?

( 2 * b ) || ! ( 2 * b )

10

Re: CMD/BAT: относительные пути в lnk-ярлыках

Хорошо, пускай будет в Коллекции.

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

11

Re: CMD/BAT: относительные пути в lnk-ярлыках

Можно кстати и через explorer.exe провернуть.
Как создать ярлык с относительным путем в проводнике windows?

12 (изменено: jite, 2010-10-04 00:55:09)

Re: CMD/BAT: относительные пути в lnk-ярлыках

Аскет пишет:

Думаю что наилучший вариант:

%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Portable\RDP\portableRDP5.exe"

В случае наличия кавычек в пути к исполняемому, благополучно запускаясь из проводника, не работает при запуске из-под Far любой версии.
Если в пути нет пробелов, можно убрать кавычки - будет работать везде.

Конечно, это не столь важно при решении вопроса портабельности, просто одно маленькое неприятное ограничение. Так, для сведения.
Пробелы в пути несложно обойти сделав ссылку на bat-запускалку, имеющую путь без пробелов, а внутри уже...

13

Re: CMD/BAT: относительные пути в lnk-ярлыках

jite пишет:

В случае наличия кавычек в пути к исполняемому, благополучно запускаясь из проводника, не работает при запуске из-под Far любой версии.

Ctrl-Enter, Enter. Или Ctrl-F, Enter.