Как сделать ярлык для другого ярлыка?

9

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

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

user541686
источник
В Windows 7 это просто работает ... Это не то же самое в XP?
Soandos
@soandos: он создает копию ярлыка вместо того, чтобы создавать ярлык для ярлыка.
user541686
@soandos Если вы сделаете ярлык для ярлыка, новый ярлык будет ссылаться на путь первого ярлыка, а не на путь самого файла ярлыка. Это поведение по умолчанию в Windows XP и 7.
iglvzx

Ответы:

4

Я полностью понимаю полезность ссылки на ссылки, и я также искал простое решение. Лучшее, что я придумал, - это просто использовать Hardlinks, которые указывают на файл shortcut.lnk. Я проверил символические ссылки (узлы предназначены только для папок, а не для файлов, поэтому они не были проверены), и они НЕ работают (при создании они представляют собой поврежденные файлы, которые не открываются).

Жесткие ссылки имеют ряд преимуществ и недостатков. Основным недостатком является то, что их практически невозможно легко создать из резервной копии (для резервного копирования их в другое погружение или даже в другое место на том же диске требуется стороннее программное обеспечение или сценарии). Основное преимущество заключается в том, что они автоматически обновляются при изменении исходного файла, поэтому изменение 1 файла ярлыка (новый путь / значок) также изменяет все связанные жесткие ссылки [однако имена для жестких ссылок уникальны, поэтому изменение имени файла не изменить имя жесткой ссылки и наоборот]. Другая особенность, которая является как преимуществом, так и недостатком жестких ссылок, заключается в том, что изменение значка / пути для жесткой ссылки (изменение данных жесткой ссылки) ТАКЖЕ меняет ОРИГИНАЛ. Это НЕ включает «удаление самой ссылки» (ссылка может быть удалена как любой другой файл; без удаления самого исходного файла). Это выгодно, поскольку поддерживает синхронизацию всех связанных ссылок, но невыгодно в тех случаях, когда жесткая ссылка хранится в уязвимом месте и ее данные злонамеренно изменены, или при изменении данных одной ссылки сделана ошибка пользователя. Это изменение будет распространено на всех партнеров с жесткой связью, включая оригинал. Честно говоря, такое поведение обычно полезно, за исключением случаев, когда вам нужна «стабильная ссылка на источник» (односторонняя модификация) Это изменение будет распространено на всех партнеров с жесткой связью, включая оригинал. Честно говоря, такое поведение обычно полезно, за исключением случаев, когда вам нужна «стабильная ссылка на источник» (односторонняя модификация) Это изменение будет распространено на всех партнеров с жесткой связью, включая оригинал. Честно говоря, такое поведение обычно полезно, за исключением случаев, когда вам нужна «стабильная ссылка на источник» (односторонняя модификация)

Я протестировал копирование отдельных жестких ссылок и папок, содержащих жесткие ссылки, в проводнике Windows, и в результате просто создаются разрозненные ярлыки для исходных данных (больше не связанные жесткие ссылки, и, следовательно, они не меняются при изменении исходной ссылки). Я нахожу это отсутствие простого копирования чрезвычайно раздражающим и основной причиной, по которой я не хотел бы широко использовать их, но, если у вас есть только несколько для определенной цели (например, синхронизация ссылок из стабильного каталога, на рабочий стол / панель задач) / startmenu) они все еще могут быть хорошим решением (несмотря на то, что они на самом деле не переносимы на другие системы, без написания скрипта для автоматизации построения их каталогов). Однако они ДЕЙСТВИТЕЛЬНО перемещаются без разрывов (вы можете переместить их в любую точку файловой системы, как только они будут созданы. Вы просто не сможете их «скопировать»).

Чтобы создать жесткую ссылку, просто откройте командную строку с повышенными правами (.cmd открыт для system32 или запустите .cmd от имени администратора) и введите:

mklink /H [path and name of Hardlink] [location of original file]

Пример:

mklink /H C:\users\you\desktop\hardlink.lnk C:\users\you\location\shortcut.lnk

Целесообразно назначать жесткую ссылку с типом файла, на который она ссылается (например, здесь, .lnk, но для документов блокнота hardlink.txt или аналогичного), потому что это в основном зеркальное отображение исходного файла, а проводник Windows обрабатывает его так, как если бы он были оригиналы (опять же полезное поведение). Я также должен прямо заявить, что они создаются ТОЛЬКО через командную строку (или стороннее программное обеспечение, которое предоставляет shellExtension или gui для команды). Кроме того, они не являются зеркальной копией«в оригинале они могут показывать размеры файлов исходного объекта, но по сути они занимают 0 байт на диске; на самом деле они являются ссылками, хранящимися в MFT диска (что также является причиной, по которой их нельзя сделать между двумя разными разделами [что является еще одной особенностью, о которой стоит упомянуть; но которую легко преодолеть с помощью умного сочетания сочетаний клавиш, переходов). , символические ссылки и жесткие ссылки, используемые вместе в унисон])

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

user612298
источник
Это был полностью такой вариант. (все еще работает в Windows Server 2012). Пожалуйста, отметьте как отвеченный, поскольку он точно ответил на вопрос. Я использую это для «версионирования» программного обеспечения, распространяемого по сети и запускаемого 15 пользователями. Когда у меня есть новая версия, я просто изменяю «первую» ссылку, чтобы указать на эту новую версию, и hardLink уважает это изменение. Жесткая ссылка - это последняя ссылка, которая находится на рабочих столах моих пользователей (10-15 пользовательских профилей).
Саймон
Либо это не работает в Windows 10, либо я не понимаю, что такое жесткая ссылка. Я точно следовал указаниям и там было написано «Жесткая ссылка создана для ...», но когда я щелкаю правой кнопкой мыши по жесткой ссылке и просматриваю Свойства, она все равно указывает на исходный файл, а не на другую ссылку. Я даже побежал fcиз командной строки, и там написано: «Никаких различий не обнаружено»
Эндрю Стейц,
2

Самый простой обходной путь - использовать пакетные файлы.

Если Shortcut.lnkон находится внутри C:\Files\, создание нового .batфайла со следующей строкой кода запустит .lnkфайл:

"C:\Files\Shortcut.lnk"
iglvzx
источник
Да, я уже знал об этом (это «ответ», упомянутый везде в Интернете, когда вы искали это), но он на самом деле не отвечает на вопрос ...
user541686
Есть ли причина, по которой «ярлык» .lnkфайла также должен быть .lnkфайлом? Если это важно или если у вас есть какие-либо другие требования, отредактируйте свой вопрос, чтобы включить эти детали. Таким образом, вы получите лучший ответ. :)
iglvzx
Хм, да, потому что это то, что я задал в вопросе ... если бы .batфайлов было достаточно, то Microsoft не .lnk
создала
И к вашему сведению, командные файлы ведут себя совсем не так, как ярлыки, в тот момент, когда вы щелкаете по ним правой кнопкой мыши (или, черт возьми, они даже не выглядят как ярлыки, даже если вы на них смотрите ).
user541686
Хорошо. Я пошел дальше и отредактировал ваш вопрос, чтобы прояснить это требование.
iglvzx