我注意到我无法使用\\?\Volume{f993747a-5d7a-4de1-a97a-c20c1af1ba02}\path\to\target
或\Device\HarddiskVolume5\path\to\target
作为快捷方式目标——它不起作用。只有当我在绝对路径中使用驱动器号时它才有效。我不想使用驱动器号或相对路径。
我可以指定一个快捷方式的目标,使其在驱动器号更改时不会中断吗?或者,我可以创建一个 NTFS 重新解析点(例如连接点)来执行此操作吗?
答案1
我可以创建一个指向特定驱动器的快捷方式,而不管其驱动器号是什么吗?
我不想使用驱动器号或相对路径
您希望使用的目标类型(\?\Volume{f993747a-5d7a-4de1-a97a-c20c1af1ba02}\path\to\target
或\Device\HarddiskVolume5\path\to\target
)不是快捷方式的有效目标。
所有有效的快捷方式目标都必须使用下面指定的类型之一。
快捷方式首选项允许您配置文件系统对象(如文件、文件夹、驱动器、共享或计算机)、shell 对象(如打印机、桌面项目或控制面板项目)或 URL(如网页或 FTP 站点)的快捷方式。
来源配置快捷方式项
或者,我可以创建一个 NTFS 重新解析点(例如连接点)来执行此操作吗?
您可以使用链接创建以下形式的符号链接\\?\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>
笔记
- 这仅当您尝试从命令提示符取消引用链接时才有效,但当您尝试从资源管理器界面访问它时则无效。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 链接- 创建到目录或文件的符号链接,或者创建硬文件链接或目录连接。
答案2
这有点像黑客行为并且可能不安全,但您应该能够使用floatdrive
适当的共享权限在感兴趣的驱动器的根文件夹(例如,共享名)上设置共享,然后使用网络 URL 语法构建所有快捷方式/链接localhost
:
\\localhost\floatdrive\folder\or\file\of\interest.txt
只要 Windows 正确安装驱动器,共享名称可能就会跟随驱动器,无论驱动器分配了什么驱动器号。但不幸的是,我目前手头没有适合测试这一点的系统。