Використання відносних шляхів для ярликів Windows


49

У мене є схема папок на зразок (дуже спрощена версія):

New Files
 >Tools
 >Scripts
Tested Files
 >Tools
 >Scripts

... і я хотів би мати ярлик у кожній папці, починаючи з дочірних папок "Нові файли", до дочірньої папки "Перевірені файли". Але ця папка час від часу може переміщуватися, що може порушити вказані ярлики.

Чи існує спосіб відносного ярлика до кожної папки? Я пам’ятаю, що робив це в HTML, де можна було встановити шлях, щось, .../Filesщоб повернутися до батьківської, а потім у нову папку, але я не впевнений, чи це якась підтримка під ярликами Windows?

PS: Випадок подібних відносних ярликів, коли цільовим файлом є, розглядається у https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the- папка-є . У цьому випадку ціль - це папка.


1
Ти спробував ../Files, з двома крапками? Я не запускаю Windows, але думаю, що це може працювати.
Брайан Z

1
Це перше, що я спробував, хоча дякую. :(
Гері Морріс


@ sancho.s - AFAIK, відповіді там працюють лише для виконання файлів .bat. Тут потрібен спосіб посилання на папку.
ToolmakerSteve

@ToolmakerSteve - я думаю, ви перевірили / прочитали "відповіді там" лише поверхово. Одне з них ( stackoverflow.com/a/1751350/2707864 ) є прийнятим рішенням, яке є приблизно. На 4 роки старше. Я цього не пробував. Інший ( stackoverflow.com/a/29261618/2707864 ) - це друга половина прийнятого тут рішення. Ви навіть прокоментували це. Я спробував це, і це працює. Не варто ретельно розміщувати коментар, але слід намагатися не вводити в оману читачів.
sancho.s Відновити Моніку

Відповіді:


50

Ви можете використовувати цю утиліту: Відносно .

В основному це створює ярлик до "explorer.exe" з параметром вашого відносного шляху правою кнопкою миші (так само, як ви створюєте звичайний ярлик).

Звичайно, це можна зробити вручну.
У вашому прикладі ви створили ярлик у "Нові файли \ Інструменти" до

%windir%\explorer.exe "..\..\Tested Files\Tools"

Для цього можна скористатися звичайним контекстним меню «Створити / створити ярлик» для Windows і ввести вищевказану команду в поле «Введіть розташування елемента».


Я читав про це під час своїх попередніх досліджень, але сподівався на власне рішення в Провіднику. Це буде мій резервний план, привіт.
Гері Морріс

До речі, чи залишиться цей відносний шлях однаковим і між системами? Або мені знадобиться встановити відносні, якщо я переміщу папки / вміст між різними системами?
Gary Morris

3
"Відносно" робить лише ярлик, використовуючи стандартний "% windir% \ explorer.exe", тому вам не потрібно відносного в іншій системі. Це було б те саме, що вводити %windir%\explorer.exeперед відносним шляхом, роблячи стандартний ярлик. Отже, якщо ви робите це вручну, тобі взагалі не знадобиться. (Вам просто потрібно запам'ятати команду перед вашим відносним шляхом)
Рік

Ах вибачте, я неправильно зрозумів ту частину вашої першої відповіді, моя погана! Дуже дякую!
Гері Морріс

2
Ручне рішення тут не працює для мене поза коробкою. Крім того, я повинен змінити "Почати в" з %windir%порожнього.
notan3xit

30

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


Інший варіант - запропонувати cmd.exeзамість запуску ярлика з того, що ви запускаєте, потім передайте все, що ви запускаєте, як аргументcmd.exe

введіть тут опис зображення

%COMSPEC%є змінною середовища вказує на командний рядок за замовчуванням .

/C змушує консоль закриватися самою після виконання команди.


Дуже дякую! Це працювало для мене. Я витратив години, намагаючись змусити мій ярлик виконати скрипт з оболонками живлення в одному каталозі.
Шервін Шахдар

Корисно для іншої ситуації, проте питання не в тому, щоб відкрити якийсь файл; йдеться про можливість перейти до визначеної папки в Windows Explorer. Чи є спосіб адаптувати цю відповідь для цього?
ToolmakerSteve

7

Цей трюк працює:

% COMSPEC% / C починає "ваше ім'я exe без шляху"

приклад

% COMSPEC% / C start winmine.exe


2
Будь ласка, прочитайте запитання ще раз уважно. Ваша відповідь не відповідає на початкове запитання.
DavidPostill

1
Для Win10 1607 це рішення чудово відповідає на питання ОП, Мета: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"Початок роботи: [залишити порожнім]
semtex41

@ semtex41 Так? Я намагаюся це зробити, і результат - діалогове вікно про помилку із записом "Windows не може знайти" GoogleChromePortable ". Що це стосується мети ОП - переміщення Провідника Windows у вказану папку?
ToolmakerSteve

@ToolmakerSteve добре заголовок "Використання відносних шляхів для ярликів Windows", і я робив внесок у раніше надану відповідь. І мета ОП - насправді зробити шляхи динамічними, а не статичними. Отже, оскільки моя відповідь полягає в тому, як я створив ярлик, який виконується нестатичним шляхом, я вважаю, що моя відповідь підходить.
semtex41

@ semtex41- Описана мета ОП - це ".. ярлик .." дочірньої папки "Тестовані файли". Якщо ви не пояснюєте , як мати цю відповідь здійснити це, то прохання уточнити , що ви були додавання до відповіді. Схоже, ви щойно навели інший приклад того, як виконати файл .exe. Але відповідь уже показав такий приклад. Тож, будь ласка, перекажіть точку, яку ви робили?
ToolmakerSteve

6

Я використовую подібне рішення в шаблоні, який запускає моє середовище веб-розробки (відкрити каталог проектів, відкрити браузер, запустити WAMP, запустити SCSS ...)

введіть тут опис зображення

Я можу передавати аргументи до свого сценарію bat і т. Д., Це класно. Обов’язково ставте /cаргументи післяcmd.exe


2

Можна використовувати mklink . Це дозволяє створювати символічні посилання, жорсткі посилання та посилання на каталоги.

 mklink /d Tools "..\Tested Files\Tools"  (elevated command prompt)

Якщо підвищеного доступу немає, можна скористатися / j

 mklink /j Tools "..\Tested Files\Tools"

Для переміщення по всій структурі слід скористатися командою xcopy . Наприклад, якщо вся структура знаходиться під контейнером :

container
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

введення команди

 copy /b /e container container2

створить таку структуру:

container2
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

/ Б перемикач буде копіювати символьні посилання замість того , щоб перетворити їх в папки.


Але чи буде це посилання все-таки правильним, якщо набір папок переміщено в інше місце?
ToolmakerSteve

Для цього потрібні привілеї, яких у мене немає, хоча, схоже, це зробило б роботу ... Чи не заперечували б ви розмістити зображення отриманих ярликових властивостей, як тільки вони були створені?
sancho.s Відновити Моніку

Посилання справді правильні. Це можна підтвердити командою "dir". Проблема полягає в тому, що дії "копіювати-вставити", "перемістити" та "скопіювати" менеджера файлів зруйнують структуру. Я змінив відповідь, щоб включити вирішення.
Krauss

1

Ярлик може записувати його розташування у змінній та викликати команду за допомогою змінної. Наприклад, створіть ярлик "Бабуся і дідусь" з цільовим:

%windir%\system32\cmd.exe /c set HERE="%CD%" && "C:\Here.bat"

Створіть пакетний файл "C: \ Here.bat" з одного рядка:

@%windir%\explorer.exe /n,/select, %HERE%

Тепер, у якій би папці не було бабусі, коли ви клацнете на ній, відкриється батьківська її батьківська папка. Він навіть працює з бабусею та дідусем у кореневому каталозі.

Ваш пакетний файл міг би використовувати% HERE% для запуску чогось іншого, ніж explorer.exe. Або замість Here.bat після && в цілі ярлика ви можете викликати програму, яка використовує% HERE%.

У моїй системі, здається, дідусь працює з & або &&.


1
&&Наступний дзвінок виконує лише в тому випадку, якщо попередній дзвінок не повернув помилку, хоча &це не хвилює. У цьому випадку різниці не повинно бути.
leewz

1

Якщо ви залишите 'Start In'поле порожнім у властивостях ярлика, посилання відносяться до поточного робочого каталогу.

Дивіться також https://stackoverflow.com/a/17951772/40961


Як це допомагає цілі ОП переміщати Провідник Windows до вказаної папки?
ToolmakerSteve

Якщо у вас виникли проблеми, то рішення має сенс ... як ваш коментар допомагає на кожну відповідь?
David d C e Freitas

0

Ви можете створити змінну середовища, яка містить (відносний) Шлях до цільової папки або папку над нею в структурі файлової системи.

Приклад:

  • Змінна середовище:

    % Dropbox% = "C: \ Користувачі \ Користувач 1 \ Dropbox"

  • Ціль ярлика:

    "% Dropbox% \ Install \ Utilities \ File.exe"

Ви можете використовувати команду DOS SETX для створення змінних середовища.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.