Подтвердить что ты не робот

Сделать запуск ярлыка Windows относительно того, где находится папка?

У меня есть игра, в которой используется эта файловая структура:

GAME FOLDER
->data
->data->run.bat

Я хочу добавить ярлык run.bat в GAME FOLDER, но если я его перевешу, или кто-то другой установит его, это не сработает, потому что цель неверна. Есть ли способ сделать цель и "начать с" по отношению к GOLD FOLDER?

4b9b3361

Ответ 1

  1. Щелкните правой кнопкой мыши на папке /bat/и выберите "Создать ярлык".

    • В Windows 7 вы получите bat - Shortcut в текущем каталоге.
    • В Windows XP вы получите Shortcut to bat.
  2. Щелкните правой кнопкой мыши по ярлыку, который вы только что создали, и выберите Свойства.

  3. Измените цель (на вкладке "Ярлык" в Windows 7) на следующее:

    %windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat"
    
  4. Убедитесь, что Start in пуст. Это вызывает его запуск в текущем каталоге.

  5. Нажмите ОК. В Windows 7 значок ярлыка изменится на значок cmd.exe.
  6. Это, вероятно, приемлемо в случае ярлыка для .bat, но если вы хотите изменить значок, снова откройте свойства ярлыка и нажмите "Изменить значок..." (снова на вкладке "Ярлык" в Windows 7). На этом этапе вы можете просмотреть... значок или вызвать список системных значков по умолчанию, введя

    %SystemRoot%\system32\SHELL32.dll
    

    слева от кнопки Browse... и нажмите Enter. Это работает в Windows 7 и Windows XP, но значки отличаются из-за обновлений стиля (но узнаваемо похожи). В зависимости от версии Windows, ярлык находится, значок будет иногдаизменяться соответственно.

Больше информации:

См. Использование " start " команда с параметрами, переданными в запущенную программу, чтобы лучше понять пустые двойные кавычки в начале первой целевой команды.

Ответ 2

В соответствии с Microsoft, если оставить поле 'Start In' пустым, script будет запущен в текущем рабочем каталоге. Я пробовал это в Windows 7, и, похоже, он работает нормально.

Источник: http://support.microsoft.com/kb/283065

Ответ 3

Попробуйте использовать Relative (приложение командной строки Windows).

По сути, ярлык может иметь относительную ссылку, но Windows не дает возможности его создать.

Ответ 4

Если вы можете установить системную переменную (что-то вроде% MyGameFolder%), вы можете использовать ее в своих путях и ярлыках, а Windows заполнит остальную часть пути для вас (то есть %MyGameFolder%\data\MyGame.exe).

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

Ответ 5

Мне нравится решение leoj3n. Его также можно использовать для установки относительного каталога "Начало в", что мне нужно, используя параметр start/D. Без /c или/k в качестве аргумента cmd последующая команда запуска не запускается. /c закроет оболочку сразу после запуска команды, и /k сохранит ее (даже после выполнения команды). Поэтому, если у вас все работает, и вы должны увидеть его, используйте /k.

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

Ответ 6

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

%windir%\explorer.exe "..\data\run.bat"

Ответ 7

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

Ответ 8

Я не уверен, что я прав, или я что-то упустил, но пока (2016-07-11, под управлением Win7 Enterprise SP1) LNK файл адаптируется к перемещению или даже изменению буквы диска после его запуска на новом месте! Я создал новый ярлык на своем USB-накопителе и попытался переместить ярлык и его цель таким образом, чтобы относительное положение оставалось неизменным, а затем я изменил букву диска. Ярлык работал в обоих случаях, и целевое поле было адаптировано после того, как я дважды щелкнул его.

Похоже, Microsoft решила эту проблему в одном из последних обновлений.

Пожалуйста, подтвердите это.

Ответ 9

После создания ярлыка, как у вас, установите в свойствах следующие свойства:

Цель: %comspec% /k "data\run.bat"

  • Отбросьте /k, если вы не хотите, чтобы приглашение оставалось открытым после его запуска.

Начать In: %cd%\data

Ответ 10

Возможно, пакетный файл изменит текущий рабочий каталог (CD).

Ответ 11

Самое простое решение: > Enviroment Variables удобных маленьких тварей.

Если другой человек должен установить/распаковать все в любом месте на своем системном диске (обычно c:).

В демонстрационных целях вызовите наше приложение "test.exe" (может быть любой исполняемый файл/файл не обязательно должен быть exe), и он должен быть установлен/несжат в папку MYCOMPANY\MYAPP\

Затем просто создайте ярлык, который использует% SystemDrive%\MYCOMPANY\MYAPP\test.exe как цель и  % SystemDrive%\MYCOMPANY\MYAPP\as start in.

Итак, теперь вы хотите развернуть его. Использование такого приложения, как "WinRAR".

Легкий способ - использовать zip файл с самоизвлечениями, аккуратно упакованный как ".exe" Я бы использовал один для своего ярлыка, а другой для приложения. Есть способы сделать один zip файл для самоизвлечения, который извлекает разные файлы в разные каталоги, но я еще не играл с ним.

Другой способ - сделать selfextract для shorcut, встроить его в selfextract для приложения, а затем применить прогон один раз script, будучи тем, что вы знаете, где будет файл.  и др.

Если вы хотите, чтобы установщик мог использовать пользовательские каталоги установки/распаковки, лучше взгляните на NSIS скриптовая система установки.

Играйте вокруг, весело, надеюсь, что моя информация помогла.

Ответ 12

Просто небольшое улучшение для решения leoj3n (чтобы окно консоли исчезло): вместо того, чтобы помещать %windir%\system32\cmd.exe /c start "" "%CD%\bat\bat\run.bat" в поле Target: вашего ярлыка Windows, вы также можете попробовать добавить только следующее: %windir%\system32\cmd.exe /c "%CD%\bat\bat\run.bat" И затем добавив start перед вашими командами в run.bat. Это заставит консольное окно исчезнуть, но все остальное останется прежним.

Ответ 13

Ссылка с относительным путем может быть создана с помощью команды mklink в командной строке Windows.

mklink /d \MyDocs \Users\User1\Documents

Это может быть лучшим способом создания ссылки, потому что, по-видимому, поведение ярлыков может отличаться, возможно, в зависимости от способа их создания (пользовательский интерфейс против команды mklink). Я наблюдал какое-то странное поведение при работе ярлыков при смене корневой папки.

  • В Windows 7 есть странное поведение, которое я тестировал. Иногда ссылка все еще работает только при изменении корневой папки цели (свойства ярлыка автоматически обновляются в соответствии с измененным путем!). Поле "начать с" также обновляется автоматически, если оно там было.
  • Я также заметил, что одна ссылка не работает при первом изменении корневого пути (свойства показывают старый), но она работает после 2-го и каждый раз после этого. Свойства ссылки обновляются в результате первого запуска!
  • Я также заметил по крайней мере для двух ссылок, он не обновляет путь и больше не работает.
  • От свойств ссылки нет никакой разницы в формате каких-либо полей, но поведение отличается.

Ответ 14

пока не выглядит решением для этого.

в программном обеспечении ACL для аудита, мы можем использовать ".." для указания стартового каталога. Я надеюсь, что Windows может позволить что-то подобное.

Например: исходный путь: c\windows\games\u2\strife.exe если ярлык вставлен в папку "Игры", а друзьям нравится копировать...

путь должен (может быть) отредактирован до "..\u2\strife.exe"