Можно ли создать ярлык, который указывает на определенный диск независимо от его буквы?
Я заметил, что я не могу использовать \\?\Volume{f993747a-5d7a-4de1-a97a-c20c1af1ba02}\path\to\target
или же \Device\HarddiskVolume5\path\to\target
как ярлыки - это не сработает. Это работает только тогда, когда я использую буквы дисков в абсолютных путях. Я не хочу использовать буквы дисков или относительные пути.
Могу ли я указать цель для ярлыка, который не сломается при изменении букв диска? Или я могу создать точку повторной обработки NTFS (например, точку соединения) для этого?
2 ответа
Можно ли создать ярлык, который указывает на определенный диск независимо от его буквы?
Я не хочу использовать буквы дисков или относительные пути
Тип целей, которые вы хотите использовать (\?\Volume{f993747a-5d7a-4de1-a97a-c20c1af1ba02}\path\to\target
или же \Device\HarddiskVolume5\path\to\target
) не являются допустимыми целями для ярлыка.
Все действительные цели для ярлыков должны использовать один из типов, указанных ниже.
Элементы предпочтений ярлыка позволяют настроить ярлык для объекта файловой системы (например, файла, папки, диска, общего ресурса или компьютера), объекта оболочки (например, принтера, элемента рабочего стола или элемента панели управления) или URL (например, веб-страница или FTP-сайт).
Источник Настройка элемента ярлыка
Или я могу создать точку повторной обработки NTFS (например, точку соединения) для этого?
Вы можете использовать mklink для создания символической ссылки в форме \\?\Volume{f993747a-5d7a-4de1-a97a-c20c1af1ba02}\path\to\target.txt
c:
md \test
cd \test
mklink testlink \\?\Volume{d1a54614-9369-11e4-b7ab-ccaf78b24c0a}\test\test.txt
Теперь тест каталога содержит символическую ссылку (которая в моем случае указывает на файл f:\test\test.txt
на внешнем диске).
C:\test>dir
Volume in drive C has no label.
Volume Serial Number is C8D0-DF1E
Directory of C:\test
29/03/2015 23:24 <DIR> .
29/03/2015 23:24 <DIR> ..
29/03/2015 23:17 <SYMLINK> testlink [\\?\Volume{d1a54614-9369-11e4-b7ab-ccaf78b24c0a}\test\test.txt]
1 File(s) 0 bytes
2 Dir(s) 248,410,976,256 bytes free
...
C:\test>type testlink
this file is test.txt
C:\test>
...
C:\test>type f:\test\test.txt
this file is test.txt
C:\test>
Заметка
- Это работает, только если вы пытаетесь разыменовать ссылку из командной строки, но не если вы пытаетесь получить к ней доступ из интерфейса проводника.
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- mklink - создает символическую ссылку на каталог или файл, или создает жесткую ссылку на файл или соединение каталога.
Это немного взломано и, возможно, небезопасно, но вы должны иметь возможность настроить общий доступ к корневой папке интересующего диска (sharename floatdrive
скажем) с соответствующими разрешениями на совместное использование, а затем создайте все ярлыки / ссылки, используя сетевой синтаксис URL на localhost
:
\\localhost\floatdrive\folder\or\file\of\interest.txt
Пока Windows правильно подключает диск, возможно, имя общего ресурса будет следовать за диском, независимо от того, какая буква ему назначена. К сожалению, на данный момент у меня нет под рукой системы, подходящей для проверки этого.