Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   [решено] Как задать "относительные" ярлыки? (http://forum.oszone.net/showthread.php?t=129207)

truvo 20-01-2009 00:38 1013322

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

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

okshef 20-01-2009 01:08 1013339

На вскидку, кажется, что нет, а вот если в автозапуске выполнять батник или скрипт, то, наверное, можно. Я в свое время баловался созданием дисков с дистрибутивами с помощью программ типа AutoPlay Menu Builder. Так вот, переиначить, подогнать идею под цель, может, что и получится. Решение крутится возле метода, описанного в статье Запуск RunOnceEx с CD.

Vadikan 20-01-2009 01:09 1013342

Pegtop PStart

Цитата:

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

:)

okshef 20-01-2009 01:15 1013349

Все уже украдено до придумано за нас :)

truvo 20-01-2009 01:28 1013364

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

Vadikan 20-01-2009 01:44 1013378

Цитата:

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

Я знаю, вы объяснили это в той теме - просто мне показалось забавным совпадение.

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

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

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

Vadikan 20-01-2009 02:32 1013412

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

truvo 20-01-2009 02:37 1013415

Цитата:

Цитата Vadikan
задает постоянную переменную, причем она недоступна в текущей командной сессии. А вам нужна только в текущей »

Это пока для меня туман, может, попозже пойму.

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

Vadikan 20-01-2009 02:43 1013416

Цитата:

Цитата truvo
Это пока для меня туман, может, попозже пойму »

Я думал, что раз вы занимались АУ, то читали справочник... Переменные среды

Цитата:

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

Приведенный в сообщении код будет работать в любой ОС при наличии файла diskroot.txt в корне диска.

ShaddyR 20-01-2009 17:15 1013946

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

Vadikan 20-01-2009 18:16 1013991

Цитата:

Цитата ShaddyR
Нешто вариант с маркерным файлом проще, чем
set disk=%~d0 »

Нет, конечно, можно и так. Спасибо, что напомнил. Просто я изначально привел ссылку на статью по АУ Vista, чем только запутал :) Оттуда и код.

naxaH 28-06-2010 11:07 1443070

Разрешите оживлю топик. Не люблю создавать новые темы .)

Имеем 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 1443159

Цитата:

Цитата naxaH
И как юзать параметр ".\" »

это значит - "текущая директория", в данном случае - для ярлыка, т.е. предполагается ярлык в корне диска.

Цитата:

Цитата naxaH
Подскажите что делаю не правильно? »

запустите из корня флешки батник
Цитата:

%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Directuse\Total Commander\Totalcmd.exe"
pause
что он выдаст?

Цитата:

Цитата naxaH
Имеем win7 64 »

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

naxaH 28-06-2010 15:11 1443199

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 1443438

Цитата:

Цитата naxaH
%windir%\system32\RunDll32.exe shell32.dll,ShellExec_RunDLL ".\Directuse\Total Commander\Totalcmd.exe" »

в ХР работает. Может, в 7-ке синтаксис или названия процедур в библиотеке отличаются?

naxaH 29-06-2010 09:51 1443625

ShaddyR,

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

Maza Faka 29-06-2010 10:29 1443636

Ну с bat-ником можно проще использовать относительные пути:
Код:

.\folder\program.exe

naxaH 30-06-2010 17:04 1444652

Решено. Ищущий всегда найдет.

Решение взято с вот этого сайта
Собсна сами решения:

Первое: %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 1444683

Цитата:

Цитата naxaH
рабочая папка %cd% »

=пусто, если запущено не с bat-файла, в котором переменная заранее определена.
>
Цитата:

Цитата naxaH
%windir%\system32\cmd.exe /c cd “\DirectUse\Total_Commander” & “totalcmd.exe” рабочая папка пусто »

это, ИМХО, попрощее будет. Я бы разве что поправил так:
%comspec% /c cd /d "\DirectUse\Total_Commander"&& start "" totalcmd.exe

naxaH 30-06-2010 18:00 1444698

Да это лана.. а как закрыть cmd'шное окно? Можно после всего пути прописать еще ченить чтобы окошко исчезло?

ShaddyR 30-06-2010 18:01 1444700

Цитата:

Цитата naxaH
как закрыть cmd'шное окно? »

поменять строку на ту, которую я дал.

naxaH 30-06-2010 18:07 1444702

Сори. Юзал до этого чето не получилось. Щас перепопробЫвал пашет. Все сладко. Спасибо.

~SloNicK~ 09-10-2011 22:58 1769704

Подскажите плиз...

Необходимы ярлыки с относительными путями до папок. Использую путь типа: %windir%\explorer.exe "путь к папке" Другие варианты с Windows 7 не прокатывают.

Проблема в том, что при таком раскладе папка открывается в новом окне, а мне надо открывать её в том же, откуда был запущен ярлык - возможно ли?

gadkin 15-12-2014 14:01 2444247

Цитата ShaddyR:
%comspec% /c cd /d "\DirectUse\Total_Commander"&& start "" totalcmd.exe »
если запускать ярлык от админа, то исполняемый файл не найдётся... можно это как-нибудь обойти?

mwz 15-12-2014 17:59 2444322

Цитата:

Цитата ShaddyR
Я бы разве что поправил так:
%comspec% /c cd /d "\DirectUse\Total_Commander"&& start "" totalcmd.exe »

Мой рабочий батник, лежащий в коне флэшки, которая может иметь любую букву, для запуска версии TotalCmd соответствующей разрядности с этой флэшки (TotalCmd отзеркалирован с рабочего компьютера в папку \TotalCmd используя для начала утилиту TC2usb, лежащую на сайте TotalCmd):
Код:

@Echo off
cd "%~dp0"
If "%ProgramFiles(x86)%"=="" Start "TotalCmd" "%~dp0TotalCmd\TOTALCMD.EXE"
If NOT "%ProgramFiles(x86)%"=="" Start "TotalCmd" "%~dp0TotalCmd\TOTALCMD64.EXE"
exit

PS
Заодно, перечитав тему, сейчас ярлык к нему тематический кинул, с относительным (относительно корня флэшки) путём:
Код:

%windir%\system32\cmd.exe /C start .\starttc.cmd
PPS
...который не работает при запуске от имени Администратора – в отличие от исходного батника: "Не могу найти .\starttc.cmd". :(


Время: 19:28.

Время: 19:28.
© OSzone.net 2001-