Любой способ указать, например, \\?\Volume {f993747a-5d7a-4de1-a97a-c20c1af1ba02} \path \to \target.txt в качестве цели символической ссылки? Или абсолютный путь всегда требует буквы диска?
2 ответа
Может ли символьная ссылка NTFS иметь цель guid тома?
Вы можете использовать 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
Теперь каталог test содержит символическую ссылку (которая в моем случае указывает на файл 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 - создает символическую ссылку на каталог или файл, или создает жесткую ссылку на файл или соединение каталога.
Я заметил только одну проблему после многих лет интенсивного использования 10,000's
жестких ссылок между приводами. Насколько это важно, будет зависеть от вашей конкретной ситуации. Обратите внимание, что мое приложение использует только жесткие ссылки («соединения каталогов», созданные с помощью linkd.exe
), поэтому следующее может относиться или не относиться к другим типам символических ссылок.
Единственная проблема, с которой я столкнулся, это то, что chkdsk плохо себя ведет в редких случаях. Если chkdsk.exe
запускается автоматически при загрузке в ответ на то, что диск ранее был отключен с ожидающим грязным флагом, то в некоторых случаях он удаляет все перекрестные переходы. Помимо удаления узлов, ошибка chkdsk.exe
ничего не портит .
Существуют различные обходные пути и стратегии для решения проблемы chkdsk.exe
, которые выходят за рамки исходного вопроса, поэтому достаточно сказать, что да, это работает ... с одним замечанием, с которым я столкнулся.