Войти

Показать полную графическую версию : [решено] Как задать "относительные" ярлыки?


Страниц : [1] 2

truvo
20-01-2009, 00:38
Прошу прощения за корявую формулировку темы. А суть такая: можно ли задать (и как) ярлыки в корне флэшки, указывающие на файлы в папках на той же флэшке, чтобы эти ярлыки срабатывали на любом компьютере независимо от того, какую букву система назначила флэшке на данном компьютере?

И попутный вопрос - может, есть какие-то вспомогательные утилиты, чтобы открывать определенные файлы, содержащиеся на флэшке, через них - т. е. задавать эти относительные пути как-то средствами утилиты?

okshef
20-01-2009, 01:08
На вскидку, кажется, что нет, а вот если в автозапуске выполнять батник или скрипт, то, наверное, можно. Я в свое время баловался созданием дисков с дистрибутивами с помощью программ типа AutoPlay Menu Builder. Так вот, переиначить, подогнать идею под цель, может, что и получится. Решение крутится возле метода, описанного в статье Запуск RunOnceEx с CD (http://www.oszone.net/2805).

Vadikan
20-01-2009, 01:09
Pegtop PStart (http://www.pegtop.net/start/)

В WinXP SP3 копирую с рабочего стола ярлык в другую папку и пытаюсь изменить пути в свойствах ярлыка. Зачем - не спрашивайте, просто считайте, что мне необходим этот же lnk-файл, но с другими в нем путями, несуществующими в данной ОС. »
:)

okshef
20-01-2009, 01:15
Все уже украдено до придумано за нас :)

truvo
20-01-2009, 01:28
Vadikan, спасибо за ссылку на программу, попробую. Но замечу, что вопрос, поставленный мной раньше (в приведенной вами цитате) не имел ничего общего с сегодняшним - тогда меня интересовало создание правильных недостающих ярлыков при автоустановке системы.

Vadikan
20-01-2009, 01:44
Но замечу, что вопрос, поставленный мной раньше (в приведенной вами цитате) не имел ничего общего с сегодняшним - тогда меня интересовало создание правильных недостающих ярлыков при автоустановке системы. »
Я знаю, вы объяснили это в той теме - просто мне показалось забавным совпадение.

Текст ниже был отредактирован постфактум, поскольку запутал автора темы

Вы можете также запускать программы командным файлом, только нужно определить букву диска. Разместить в корне диска файл 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

truvo
20-01-2009, 02:30
То есть в XP - set, а в Vista - setx ? То есть командных файлов для запуска данной программы нужно будет два - для использования на компах с различными ОС?

Vadikan
20-01-2009, 02:32
truvo, setx задает постоянную переменную, причем она недоступна в текущей командной сессии. А вам нужна только в текущей - найти diskroot.txt, задать переменную и запустить программу.

truvo
20-01-2009, 02:37
задает постоянную переменную, причем она недоступна в текущей командной сессии. А вам нужна только в текущей »Это пока для меня туман, может, попозже пойму.

И всё же, я не понял - если в файле написано set, а не setx - этот файл будет работать и в Vista тоже? Или нужны два разных файла, соответственно ОС?

Vadikan
20-01-2009, 02:43
Это пока для меня туман, может, попозже пойму »
Я думал, что раз вы занимались АУ, то читали справочник... Переменные среды (http://oszone.net/3673)

И всё же, я не понял - если в файле написано set, а не setx - этот файл будет работать и в Vista тоже? Или нужны два разных файла, соответственно ОС? »
Приведенный в сообщении код будет работать в любой ОС при наличии файла diskroot.txt в корне диска.

ShaddyR
20-01-2009, 17:15
Vadikan, Нешто вариант с маркерным файлом проще, чем
set disk=%~d0
Или у данного кода есть нюансы отработки (в той же Висте или где еще)?
Сам пользуюсь портабельными программами с флешИ - еще ни разу не баловались.

Vadikan
20-01-2009, 18:16
Нешто вариант с маркерным файлом проще, чем
set disk=%~d0 »
Нет, конечно, можно и так. Спасибо, что напомнил. Просто я изначально привел ссылку на статью по АУ Vista, чем только запутал :) Оттуда и код.

naxaH
28-06-2010, 11:07
Разрешите оживлю топик. Не люблю создавать новые темы .)

Имеем 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" - не работает .((
Подскажите что делаю не правильно? И как юзать параметр ".\" ???
Спасибо.

Amigos
28-06-2010, 14:26
И как юзать параметр ".\" » это значит - "текущая директория", в данном случае - для ярлыка, т.е. предполагается ярлык в корне диска.

Подскажите что делаю не правильно? » запустите из корня флешки батник %windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Directuse\Total Commander\Totalcmd.exe"
pause что он выдаст?

Имеем win7 64 » в ней файлы %windir%\system32\RunDll32.exe и shell32.dll есть?

naxaH
28-06-2010, 15:11
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" ?? Или там с точкой нада че-то как-то по другому?

ShaddyR
28-06-2010, 22:28
%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Directuse\Total Commander\Totalcmd.exe" »
в ХР работает. Может, в 7-ке синтаксис или названия процедур в библиотеке отличаются?

naxaH
29-06-2010, 09:51
ShaddyR,

Да братан, ты прав. В ХР работает. Проверил на виртуалке. Ну вот собсна и проблема .)) Как добыть названия процедур семерки?
Пока только через батник start %cd:~0,2%"\DirectUse\Total Commander\Totalcmd.exe" ((

Maza Faka
29-06-2010, 10:29
Ну с bat-ником можно проще использовать относительные пути:

.\folder\program.exe

naxaH
30-06-2010, 17:04
Решено. Ищущий всегда найдет.

Решение взято с вот этого (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” рабочая папка пусто.

Вопрос тут же... как сделать (че прописать в пути ярлыка имхо) чтобы черное окошко закрывалось после вызова программы???

ShaddyR
30-06-2010, 17:42
рабочая папка %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