Относительный путь в ярлыке windows

Я уже не раз писал, что начал переходить на portable версии некоторых программ. Соответственно, я так же использую эти версии, для того чтобы иметь нужный софт всегда под рукой, т.е. на флешке:) Но, зачастую, папка с программой выглядит как обычная свалка файлов и каждый раз искать в ней файл .exe для запуска программы не очень удобно. Поэтому я начал искать возможность, как бы создать ярлыки, которые можно разместить в корень флеш-карты, которые будут запускать необходимые программы и главное на любом компьютере, куда бы я не вставил эту флешку. Понятное дело, что обычные ярлыки с абсолютными ссылками в данном случае нам не подходят, поэтому я стал искать возможность создания ярлыка с относительной ссылкой (то есть со ссылкой на файл, относительно ярлыка). И, к счастью, я нашел способ это сделать.

1) Для начала разъясню, что у меня где находится. К примеру, я хочу создать ссылку на файл X-ApacheOpenOffice.exe, который находится в папке «флеш-карта:\Soft\OpenOffice«. Ярлык мне нужен в корне флеш-карты. Хотя я так же опишу, как можно создать ярлык в отдельной папке с ярлыками на той же флешке.

Для начала разъясню что у меня где находится. К примеру, я хочу создать ссылку на файл X-ApacheOpenOffice.exe, который находится в папке "флеш-карта:\Soft\OpenOffice". Ярлык мне нужен в корне флеш-карты. Хотя я так же опишу, как можно создать ярлык в отдельной папке с ярлыками на той же флешке.

2) Так что возвращаемся в корень флешки. Жмём правой клавишей по пустому месту и выбираем «Создать» — «Ярлык».

Так что возвращаемся в корень флешки. Жмём правой клавишей по пустому месту и выбираем "Создать" - "Ярлык".

3) Указываем путь в следующем виде:

%windir%\system32\cmd.exe /C start /B /D \*путь до папки с программой* \*путь до папки с программой*\*название файла.exe*

При указании пути нужно писать обратный слеш «\«. У меня это будет выглядеть вот так:

%windir%\system32\cmd.exe /C start /B /D \Soft\OpenOffice \Soft\OpenOffice\X-ApacheOpenOffice.exe

Указываем путь в следующем виде:  %windir%\system32\cmd.exe /C start /B /D \*путь до папки с программой* \*путь до папки с программой*\*название файла.exe*  При указании пути нужно писать левый слеш "\".

Теперь небольшое пояснение: если вы хотите разместить ярлыки в отдельной папке (к примеру, в корне создали дополнительную папку), то вам нужно указать командной строке, что она должна вернуться на папку назад. Для этого перед первым слешом в пути ставим точку «.«. То есть, в моем случае это выглядело бы уже вот так:

%windir%\system32\cmd.exe /C start /B /D .\Soft\OpenOffice .\Soft\OpenOffice\X-ApacheOpenOffice.exe

4) Жмём Далее и вводим имя для нового ярлыка. Жмём «Готово».

Жмём далее и вводим имя для нового ярлыка. Жмём "Готово".

5) Открываем свойства нового ярлыка, переходим на вкладку «Ярлык«. И удаляем содержимое поля «Рабочая папка«.

Открываем свойства нового ярлыка, переходим на вкладку "Ярлык". И удаляем содержимое поля "Рабочая папка".

6) Для того, чтобы при запуске не отображалось окно командной строки (полсекунды, но некоторых раздражает), в поле «Окно» выбираем «Свернутое в значок«:

Для того, чтобы при запуске не отображалось окно командной строки (полсекунды, но некоторых раздражает) в поле "Окно" выбираем "Свернутое в значок".

7) На этой же вкладке жмём кнопку «Сменить значок» внизу окна и в открывшемся окне открываем исполняющий файл программы, на которую создаем ярлык. Выбираем ярлык и  жмём Ок. На окне свойств так же жмём ОК.

На этой же вкладке жмём кнопку "Сменить значок" внизу окна и в открывшемся окне открываем исполняющий файл программы, на которую создаем ярлык.

8) Ярлык сменит значок, и теперь можно запускать нашу программу прямо из корня. Папку с программой и ярлыком можно перенести в любое место и они будут работать и, главное, сохранять относительный путь от ярлыка к исполняющему файлу.

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

На этом всё. Надеюсь эта статья оказалась вам полезной, нажмите одну из кнопок ниже, чтобы рассказать о ней друзьям. Также подпишитесь на обновления сайта, введя свой e-mail в поле справа.

Спасибо за внимание :)

Материал сайта Skesov.ru

  • Распечатать

Оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(16 голосов, среднее: 3.8 из 5)

Поделитесь с друзьями!

0 / 0 / 0

Регистрация: 20.04.2020

Сообщений: 26

1

Создать ярлык с относительным путём

28.08.2020, 11:37. Показов 28814. Ответов 13


Студворк — интернет-сервис помощи студентам

Доброго времени суток!
Столкнулась с такой потребностью как относительный путь в ярлыке.

Есть программа которая находится внутри нескольких папок:

[*путь до папки*]\Service Centre Orders\Service Centre Orders\Debug\Service Centre Orders.exe»

Сам ярлык создаю в первой папке *Service Centre Orders*

Нашла в интернете пример как можно написать относительный путь для ярлыка:

%windir%\system32\cmd.exe /C start /B /D \*путь до папки с программой* \*путь до папки с программой*\*название файла.exe*

Написала всё по примеру:

%windir%\system32\cmd.exe /C start /B /D \Service Centre Orders\Debug \Service Centre Orders\Debug\Service Centre Orders.exe

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

%windir%\system32\cmd.exe /C start /B /D \«Service Centre Orders\Debug \Service Centre Orders\Debug\Service Centre Orders.exe«



0



Vovsla

29 / 22 / 7

Регистрация: 19.09.2018

Сообщений: 196

28.08.2020, 18:58

2

Лучший ответ Сообщение было отмечено Write как решение

Решение

Как все запущено… ) Хотя не очень )

Вот пример того, что нужно прописать в поле объекта ярлыка

Windows Batch file
1
C:\Windows\System32\cmd.exe /c start "" "%cd%\info.txt"

Переменная %cd% возвращает текущее расположение файла

Хотя, так тоже будет работать

Windows Batch file
1
C:\Windows\System32\cmd.exe /c start "" "info.txt"

Перед путем к программе в кавычках нужно указать еще одни кавычки т.к. то, что указано в первых кавычках после команды start будет восприниматься как текст заголовка окна cmd.

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

Windows Batch file
1
start "" "info.txt"

И у Вас есть пробел после названия директории, очень сомневаюсь, что у Вас именно так, но оставлю как есть
Для ярлыка

Windows Batch file
1
C:\Windows\System32\cmd.exe /c start "" "Service Centre Orders\Debug \Service Centre Orders\Debug\Service Centre Orders.exe"

Для bat файла

Windows Batch file
1
start "" "Service Centre Orders\Debug \Service Centre Orders\Debug\Service Centre Orders.exe"



2



0 / 0 / 0

Регистрация: 20.04.2020

Сообщений: 26

28.08.2020, 23:24

 [ТС]

3

Vovsla,
Так же само выдаёт ошибку, пробел тоже пробовала убирать…

Миниатюры

Создать ярлык с относительным путём
 

Создать ярлык с относительным путём
 



0



Робот сгибальщик

1183 / 516 / 110

Регистрация: 29.07.2020

Сообщений: 2,721

Записей в блоге: 7

29.08.2020, 10:19

4

Цитата
Сообщение от Write
Посмотреть сообщение

Но при нажатии на ярлык выдаёт ошибку, так как в названиях папок и самой программы есть пробелы.

Путь: \Service Centre Orders\Service Centre Orders\Debug\Service Centre Orders.exe

Вы пишете: \Service Centre Orders

\Debug \Service Centre Orders\Debug\Service Centre Orders.exe

По указанному пути, конечно же, файл не существует.



1



0 / 0 / 0

Регистрация: 20.04.2020

Сообщений: 26

29.08.2020, 21:14

 [ТС]

5

Jel, Я убирала пробел, но по примеру он был. Так как по примеру путь прописывается дважды.
Но хоть с ним, хоть без него, всё равно ошибка.

Добавлено через 4 часа 31 минуту
Vovsla, В bat файле написала путь единожды, а не дважды и заработало, программа открылась, спасибо большое, а с ярлыком так не работает, всё ещё не находит путь…



0



Робот сгибальщик

1183 / 516 / 110

Регистрация: 29.07.2020

Сообщений: 2,721

Записей в блоге: 7

29.08.2020, 21:28

6

Цитата
Сообщение от Write
Посмотреть сообщение

Я убирала пробел, но по примеру он был.

Да не только пробел!!! В команде вы указываете несуществующий путь!
Вы же сами в начале задачи указали путь: \Service Centre Orders\Service Centre Orders\Debug\Service Centre Orders.exe
Структура папок выглядит так:
Название: Снимок.PNG
Просмотров: 518

Размер: 10.2 Кб
А в команде вы пишете совершенно другой путь. Лишнюю папку Debug (я её выделил зелёным ниже):
Название: Снимок2.PNG
Просмотров: 519

Размер: 5.8 Кб



0



0 / 0 / 0

Регистрация: 20.04.2020

Сообщений: 26

29.08.2020, 21:47

 [ТС]

7

Jel,

Цитата
Сообщение от Write
Посмотреть сообщение

\*путь до папки с программой* \*путь до папки с программой*\*название файла.exe*

Цитата
Сообщение от Write
Посмотреть сообщение

Так как по примеру путь прописывается дважды.

Это не лишняя папка, просто путь от ярлыка по примеру я писала дважды.

bat файл заработал после того как я единожды написала путь и я поняла что сглупила с этим.
Ярлык так же заработал, после того как написала всё по примеру Vovsla и написала путь единично, но дополнительно надо было в свойствах ярлыка удалить текст из строчки «рабочая папка».



0



Робот сгибальщик

1183 / 516 / 110

Регистрация: 29.07.2020

Сообщений: 2,721

Записей в блоге: 7

29.08.2020, 21:49

8

Цитата
Сообщение от Write
Посмотреть сообщение

Ярлык так же заработал,

Когда знаешь — всё просто!



0



0 / 0 / 0

Регистрация: 20.04.2020

Сообщений: 26

29.08.2020, 21:59

 [ТС]

9

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

Добавлено через 6 минут
Только это уже совсем другая история, так что всем спасибо большое.



0



Робот сгибальщик

1183 / 516 / 110

Регистрация: 29.07.2020

Сообщений: 2,721

Записей в блоге: 7

30.08.2020, 07:52

10

Цитата
Сообщение от Write
Посмотреть сообщение

не видит базу данных, которая лежит с программой в одной папке, а мне не хотелось бы копировать БД к ярлыку

Тогда, вам поможет только батник:

cd \Service Centre Orders\Debug
Service Centre Orders.exe

Кстати, bat файл можно компилировать в exe. Например с помощью программы Bat to exe converter. Разобраться там не сложно. И использовать их, например на флешке или сетевом диске:

Создать ярлык с относительным путём



1



0 / 0 / 0

Регистрация: 20.04.2020

Сообщений: 26

30.08.2020, 11:30

 [ТС]

11

Цитата
Сообщение от Jel
Посмотреть сообщение

cd \Service Centre Orders\Debug
Service Centre Orders.exe

С таким текстом программа не открывается почему-то.
Писала вот так:
cd «» » Service Centre Orders\Debug\Service Centre Orders.exe»
И так:
cd Service Centre Orders\Debug\Service Centre Orders.exe
И так:
cd «Service Centre Orders\Debug\Service Centre Orders.exe»
При открытии просто ничего не происходит

Цитата
Сообщение от Jel
Посмотреть сообщение

И использовать их, например на флешке или сетевом диске

С такой целью я и хочу сделать ярлык с относительным путём, чтоб при переносе папки на флешку или другой компьютер всё работало.



0



Робот сгибальщик

1183 / 516 / 110

Регистрация: 29.07.2020

Сообщений: 2,721

Записей в блоге: 7

30.08.2020, 13:52

12

Лучший ответ Сообщение было отмечено Write как решение

Решение

Нужно применить именно 2 команды последовательно.
1. Перейти в каталог: [CD \Каталог] (слэш перед первой папкой желательно оставить, на случай если батник будет лежать не в корне диска).
cd \Service Centre Orders\Debug
2. Запуск файла: [Имя.exe]
«Service Centre Orders.exe»

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



1



0 / 0 / 0

Регистрация: 20.04.2020

Сообщений: 26

30.08.2020, 14:26

 [ТС]

13

Jel,
Слэш оказался не нужен, с ним запускаться не хотело, убрав его всё запустилось и базу данных видит.

Вот так написала:

cd «Service Centre Orders\Debug»
«Service Centre Orders.exe»

Спасибо огромное.



0



Робот сгибальщик

1183 / 516 / 110

Регистрация: 29.07.2020

Сообщений: 2,721

Записей в блоге: 7

30.08.2020, 14:41

14

Ну и вишенка на торт:
Если ваша программа имеет файлы .exe обеих разрядностей, к примеру (Service Centre Orders.exe и Service Centre Orders_x64.exe) и в среде Windows 64 bit желательно запускать файл x64, можно применить нехитрый приём.
1 п. оставляем
cd «Service Centre Orders\Debug»

А во втором пункте применяем проверку условия:
IF EXIST «%ProgramFiles(x86)%» (Service Centre Orders_x64.exe) Else (Service Centre Orders.exe)

Дословно на русский — команда проверяет наличие системной переменной ProgramFiles(x86), а это уже факт разрядности Оси 64 bit. Если условие выполняется — запускает файл (x64) иначе (х86).



4



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.08.2020, 14:41

14

В операционной системе Windows существует множество способов быстрого доступа к файлам и папкам. Один из таких способов — относительный ярлык, который позволяет создать ссылку на файл или папку с использованием относительного пути. Принцип работы относительного ярлыка основан на относительном пути, который указывает местонахождение файла или папки относительно текущей директории.

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

Относительные ярлыки могут быть созданы вручную путем указания пути к файлу или папке относительно текущей директории. Для этого используются специальные символы, такие как «..» (две точки), которые обозначают переход на уровень выше, и «.» (точка), который обозначает текущую директорию. Кроме того, относительные ярлыки могут быть созданы с помощью командной строки или средствами Windows Explorer.

Содержание

  1. Что такое относительный ярлык в Windows?
  2. Принцип работы относительного ярлыка
  3. Возможности относительного ярлыка в Windows

Что такое относительный ярлык в Windows?

Относительный ярлык в Windows представляет собой ссылку на файл или папку, которая не содержит полного пути к целевому объекту, а опирается на относительное расположение ярлыка относительно цели. Такой ярлык содержит информацию о пути к ярлыку относительно папки, в которой он находится.

Использование относительных ярлыков может быть очень удобным, особенно при перемещении файлов и папок, так как они остаются действительными независимо от положения цели. Это означает, что если файл или папка, на которую ссылается ярлык, перемещается, ярлык автоматически будет указывать на новое местоположение.

Относительные ярлыки в Windows могут быть созданы путем нажатия правой кнопкой мыши на файл или папку и выбора опции «Создать ярлык». Созданный ярлык будет иметь ту же иконку и название, что и оригинальный файл или папка.

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

Однако следует иметь в виду, что относительные ярлыки в Windows работают только в пределах одного компьютера, и если файл или папка перемещаются на другой компьютер или устройство, относительный ярлык может потерять связь с целью.

Принцип работы относительного ярлыка

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

Когда относительный ярлык открывается, операционная система Windows просматривает сохраненный путь в ярлыке и использует его, чтобы найти нужный файл или папку. При этом необходимо отметить, что относительный путь в ярлыке не сохраняет полный путь к файлу или папке, а только относительное положение от исходной папки.

Принцип работы относительного ярлыка основан на использовании двух взаимосвязанных путей. Первый путь — это путь к самому ярлыку, а второй путь — это относительный путь к файлу или папке, на который ссылается ярлык. При открытии ярлыка, операционная система совмещает эти два пути, чтобы получить полный путь к файлу или папке.

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

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

Возможности относительного ярлыка в Windows

Относительный ярлык в Windows предоставляет несколько полезных функций и возможностей, которые облегчают использование и управление файлами и папками. Вот некоторые из главных преимуществ относительных ярлыков:

1. Переносимость: Относительные ярлыки позволяют перемещать файлы и папки внутри файловой системы без необходимости корректировки путей или переустановки ярлыков. Это полезно, когда вы хотите переместить приложение в другую папку или даже на другой диск.

2. Поддержка относительных путей: Относительные ярлыки могут использовать относительные пути для ссылки на файлы или папки. Это позволяет создавать ярлыки, которые будут работать даже на разных компьютерах или в разных местах в файловой системе.

3. Возможность запуска с аргументами командной строки: Относительные ярлыки в Windows позволяют задавать аргументы командной строки, которые будут передаваться при запуске приложения. Это удобно, когда вам нужно передать определенные параметры программе при ее запуске.

4. Работа с символическими ссылками и перемещаемыми папками: Относительные ярлыки могут использоваться для работы с символическими ссылками и перемещаемыми папками в Windows. Это позволяет создавать ссылки на файлы и папки, расположенные не только внутри текущей папки, но и в других местах в файловой системе.

5. Возможность создания ярлыков из командной строки: В Windows можно создать относительный ярлык с помощью командной строки. Это позволяет автоматизировать процесс создания ярлыков и интегрировать его в сценарии или задачи.

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

http://doitq.ru/2007/01/23/otnositelnyiy-put-v-yarlyike/ — однако, описанный способ с использованием rundll32.exe не работает в Висте и Семерке.

Универсальное решение нашлось там же в комментариях:

%windir%\system32\cmd.exe /C start /B /D .\folder .\folder\program.exe

Эта команда запускает из папки folder программу program.exe. Сам ярлык должен размещаться в одной папке с folder.

Ярлык с такой ссылкой будет работать даже в том случае, если его (и  папку folder) перенесут на другой компьютер.

  • Метки Windows 7, Windows Vista, Windows XP

I have an executable on my disk-on-key in dir\program\prog.exe
I’d like to have a shortcut to the executable on the DoK’s root directory, that is, prog.lnk would refer to dir\program\prog.exe.

However, it seems that prog.lnk can’t have a relative target. This is a problem when the DoK will have different drive letters assigned to it, depending on which PC it’s connected to.

Any suggestions, aside from the obvious one of putting prog.exe in the root dir?

(ultimately, I’d like to do this at install time using nsis)

Thanks,

Rony

asked Aug 5, 2010 at 19:42

ronys's user avatar

If we assume cmd.exe would be on the same absolute path for all windows installations (probable, but not fool-proof) you can make out the .lnk file to start cmd like this

cmd.exe /c start /d. your command here

/d sets the directory to the directory of the .lnk file

There might be other useful options for the start command (e.g. /b)

answered Aug 24, 2010 at 12:53

aelgn's user avatar

aelgnaelgn

8211 gold badge11 silver badges17 bronze badges

While it is possible for shortcuts to contain a relative path to the target (.lnk files have a flag called SLDF_HAS_RELPATH) NSIS does not support creating anything other than «normal» shortcuts so you need to write the binary data directly (The .lnk format is pretty stable and has been documented by MS)

!macro FileWriteHexBytes h b
push ${h}
push ${b}
call FileWriteHexBytes
!macroend
Function FileWriteHexBytes
exch $9
exch
exch $0
push $1
push $2
loop:
    StrCpy $2 $9 2
    StrLen $1 $2
    IntCmp $1 2 0 end
    FileWriteByte $0 "0x$2"
    StrCpy $9 $9 "" 2
    goto loop
end:
pop $2
pop $1
pop $0
pop $9
FunctionEnd


Function CreateRelativeLnk
exch $9
exch
exch $0
push $1
FileOpen $0 "$0" w
StrCmp $0 "" clean
!insertmacro FileWriteHexBytes $0 "4C0000000114020000000000C000000000000046"
!insertmacro FileWriteHexBytes $0 48010400 ;flags
!insertmacro FileWriteHexBytes $0 00000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000

StrLen $1 $9 ;must be < 255!
FileWriteByte $0 $1
FileWriteByte $0 0
FileWrite $0 "$9" ;relative target path

!if 0
;The icon is problematic, does not seem like it works with relative paths (but you can use system icons...)
StrCpy $9 "explorer.exe"
StrLen $1 $9
FileWriteByte $0 $1
FileWriteByte $0 0
FileWrite $0 "$9"
!else
!insertmacro FileWriteHexBytes $0 05003e2e657865 ;fake default .exe icon
!endif

clean:
FileClose $0
pop $1
pop $0
pop $9
FunctionEnd

Call it like this:

push "$temp\testlink.lnk"
push "testdir\testapp.exe" ;full path to this is $temp\testdir\testapp.exe
call CreateRelativeLnk

While the generated .lnk seems to work, I’m not sure if I would use this in production code

A much better solution is to create a little NSIS app like Oleg suggests (NSIS applications can contain embedded data at the end of the .exe that it can read from itself at runtime etc..)

answered Aug 6, 2010 at 12:54

Anders's user avatar

AndersAnders

97.8k12 gold badges110 silver badges164 bronze badges

1

Install «Relative»

I’m using a bit of a hack. The approach is shown in this screenshot:

It starts explorer.exe and then passes a relative path like so:

%windir%\explorer.exe path\to\your\files\youFileName.example

I’m using a small tool called «Relative» for this. After you install it, you can right-click a file and then select Create relative shortcut.... It will then pop up a Save as... box. This is not quite as comfortable as simply dragging and dropping but it helps. (It also uses its own special icon for the links it creates. So you no longer have the original icon in the link. See above. You may or may not like this.)

Community's user avatar

answered Sep 4, 2013 at 11:58

basil's user avatar

basilbasil

3,4922 gold badges23 silver badges20 bronze badges

You are right. You can not use shortcuts (.lnk) on a removable media, because like you wrote yourself the removable media can have different drive letters in different situations.

If you need to have something in a root directory of the drive one use a CMD, VBS or JS instead of a shortcut. In some situation one use also a standard EXE which use a config file like INI file to start another program from the other subdirectory. It is a typical practice for CD/DVD to implement starting of a setup program after inserting of the disk. Probably this way will be OK in for your requirements also?

answered Aug 5, 2010 at 22:33

Oleg's user avatar

OlegOleg

221k34 gold badges403 silver badges798 bronze badges

I believe that the NT 4 Resource Kit command SHORTCUT.exe would create relative linked shortcuts. I wish that Microsoft would create a new supported utility or Powershell Cmdlet to facilitate the creation of relative .lnk files or make NTFS links work more like Linux symbolic links. Until then, I use .cmd/.bat and .ps1 files for this purpose.

Program.cmd

@"%~dp0Relative\Path\Program.exe" %*
  • @ = Suppresses the command echo.
  • %~dp0 = expands to the script’s directory.
  • Relative\Path = could include .. to backup a directory.
  • %* = passes any parameters received by the script on to Program.exe.

Program.ps1

Unfortunately, though .cmd/.bat files will run from any context (the run dialog, a CMD prompt, in Powershell, double clicking in File Explorer, etc), they cannot call things stored on a UNC path. For exposing things in a UNC path, in Powershell (I do this for tools like Git and Mercurial), I will create a Powershell version of the above script.

&"$PSScriptRoot\Relative\Path\Program.exe" @args
  • & = puts Powershell into command mode, so that the string in quotes gets ran.
  • «» = contains a string, expanding any variables.
  • $PSScriptRoot = expands to the script’s directory.
  • Relative\Path = could include .. to backup a directory.
  • @args = passes any parameters received by the script on to Program.exe.

answered May 29, 2016 at 0:46

Nathan Hartley's user avatar

Nathan HartleyNathan Hartley

4,0352 gold badges43 silver badges46 bronze badges

  • Отсутствует подключение к интернету на ноутбуке windows 10
  • Отмена изменений windows 10 при восстановлении системы
  • Отметьте к какому типу относится каждая программа linux текстовый редактор windows macos
  • Отсутствует группа пользователи удаленного рабочего стола windows 10
  • Отсутствует windows defender windows 11