Показать полную графическую версию : [решено] Как задать "относительные" ярлыки?
Прошу прощения за корявую формулировку темы. А суть такая: можно ли задать (и как) ярлыки в корне флэшки, указывающие на файлы в папках на той же флэшке, чтобы эти ярлыки срабатывали на любом компьютере независимо от того, какую букву система назначила флэшке на данном компьютере?
И попутный вопрос - может, есть какие-то вспомогательные утилиты, чтобы открывать определенные файлы, содержащиеся на флэшке, через них - т. е. задавать эти относительные пути как-то средствами утилиты?
На вскидку, кажется, что нет, а вот если в автозапуске выполнять батник или скрипт, то, наверное, можно. Я в свое время баловался созданием дисков с дистрибутивами с помощью программ типа AutoPlay Menu Builder. Так вот, переиначить, подогнать идею под цель, может, что и получится. Решение крутится возле метода, описанного в статье Запуск RunOnceEx с CD (http://www.oszone.net/2805).
Pegtop PStart (http://www.pegtop.net/start/)
В WinXP SP3 копирую с рабочего стола ярлык в другую папку и пытаюсь изменить пути в свойствах ярлыка. Зачем - не спрашивайте, просто считайте, что мне необходим этот же lnk-файл, но с другими в нем путями, несуществующими в данной ОС. »
:)
Все уже украдено до придумано за нас :)
Vadikan, спасибо за ссылку на программу, попробую. Но замечу, что вопрос, поставленный мной раньше (в приведенной вами цитате) не имел ничего общего с сегодняшним - тогда меня интересовало создание правильных недостающих ярлыков при автоустановке системы.
Но замечу, что вопрос, поставленный мной раньше (в приведенной вами цитате) не имел ничего общего с сегодняшним - тогда меня интересовало создание правильных недостающих ярлыков при автоустановке системы. »
Я знаю, вы объяснили это в той теме - просто мне показалось забавным совпадение.
Текст ниже был отредактирован постфактум, поскольку запутал автора темы
Вы можете также запускать программы командным файлом, только нужно определить букву диска. Разместить в корне диска файл diskroot.txt. В командном файле прописать:
@echo off
FOR %%i IN (C D E F G H I J K L N M O P Q R S T U V W X Y Z) DO IF EXIST %i:\DiskRoot.txt SET DiskRoot %%i:
start %diskroot%\folder\program.exe
exit
То есть в XP - set, а в Vista - setx ? То есть командных файлов для запуска данной программы нужно будет два - для использования на компах с различными ОС?
truvo, setx задает постоянную переменную, причем она недоступна в текущей командной сессии. А вам нужна только в текущей - найти diskroot.txt, задать переменную и запустить программу.
задает постоянную переменную, причем она недоступна в текущей командной сессии. А вам нужна только в текущей »Это пока для меня туман, может, попозже пойму.
И всё же, я не понял - если в файле написано set, а не setx - этот файл будет работать и в Vista тоже? Или нужны два разных файла, соответственно ОС?
Это пока для меня туман, может, попозже пойму »
Я думал, что раз вы занимались АУ, то читали справочник... Переменные среды (http://oszone.net/3673)
И всё же, я не понял - если в файле написано set, а не setx - этот файл будет работать и в Vista тоже? Или нужны два разных файла, соответственно ОС? »
Приведенный в сообщении код будет работать в любой ОС при наличии файла diskroot.txt в корне диска.
Vadikan, Нешто вариант с маркерным файлом проще, чем
set disk=%~d0
Или у данного кода есть нюансы отработки (в той же Висте или где еще)?
Сам пользуюсь портабельными программами с флешИ - еще ни разу не баловались.
Нешто вариант с маркерным файлом проще, чем
set disk=%~d0 »
Нет, конечно, можно и так. Спасибо, что напомнил. Просто я изначально привел ссылку на статью по АУ Vista, чем только запутал :) Оттуда и код.
Разрешите оживлю топик. Не люблю создавать новые темы .)
Имеем win7 64
Флешка с каталогом "F:\Directuse\Total Commander"
Ярлык на "totalcmd.exe" находится в корне флешки.
В инете нашел решение относительного пути в ярлыке:
%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\папка_на_флешке\моя_прога.exe"
Пробовал
%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Directuse\Total Commander\Totalcmd.exe" - не работает .((
Подскажите что делаю не правильно? И как юзать параметр ".\" ???
Спасибо.
И как юзать параметр ".\" » это значит - "текущая директория", в данном случае - для ярлыка, т.е. предполагается ярлык в корне диска.
Подскажите что делаю не правильно? » запустите из корня флешки батник %windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Directuse\Total Commander\Totalcmd.exe"
pause что он выдаст?
Имеем win7 64 » в ней файлы %windir%\system32\RunDll32.exe и shell32.dll есть?
Amigos,
shell32.dll есть, rundll32.exe есть, но без значка "программа"
Выдает это:
F:\>C:\Windows\system32\RunDll32.exe shell32.dll
otal Commander\Totalcmd.exe"
F:\>pause
Для продолжения нажмите любую клавишу . . .
rundll32.exe для 32 среды. Вобщем как быть под 64?
На 32 битной семерке пробую тоже самое. Ничего. Ярлык в корне флешки. Мне не главное на 64 запустить, главное на 32.
Вообще я правильно пишу в ярлыке ".\DirectUse\Total Commander\Totalcmd.exe" ?? Или там с точкой нада че-то как-то по другому?
%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Directuse\Total Commander\Totalcmd.exe" »
в ХР работает. Может, в 7-ке синтаксис или названия процедур в библиотеке отличаются?
ShaddyR,
Да братан, ты прав. В ХР работает. Проверил на виртуалке. Ну вот собсна и проблема .)) Как добыть названия процедур семерки?
Пока только через батник start %cd:~0,2%"\DirectUse\Total Commander\Totalcmd.exe" ((
Maza Faka
29-06-2010, 10:29
Ну с bat-ником можно проще использовать относительные пути:
.\folder\program.exe
Решено. Ищущий всегда найдет.
Решение взято с вот этого (http://www.freewaregenius.com/2008/07/24/how-to-create-shortcuts-with-a-relative-path-for-use-on-usb-drives/) сайта
Собсна сами решения:
Первое: %windir%\system32\cmd.exe /C start \directuse\total commander\Totalcmd.exe + рабочая папка %cd% .Подскажите только че тут с кавычками или еще с чемнить нада замутить чтобы \directuse\total commander\Totalcmd.exe читалось в cmd.
Второе решение: %windir%\system32\cmd.exe /c cd “\DirectUse\Total_Commander” & “totalcmd.exe” рабочая папка пусто.
Вопрос тут же... как сделать (че прописать в пути ярлыка имхо) чтобы черное окошко закрывалось после вызова программы???
рабочая папка %cd% »
=пусто, если запущено не с bat-файла, в котором переменная заранее определена.
>
%windir%\system32\cmd.exe /c cd “\DirectUse\Total_Commander” & “totalcmd.exe” рабочая папка пусто »
это, ИМХО, попрощее будет. Я бы разве что поправил так:
%comspec% /c cd /d "\DirectUse\Total_Commander"&& start "" totalcmd.exe
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.