windows mklink 使用 相对路径链接

本文介绍了Windows环境下使用symlink创建相对路径链接的方法,并通过实验证明了其具备跨盘符及多级目录的能力。同时,文章还对比了几款压缩软件对于symlink的支持情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直以为windows没有相对路径链接的,某日使用symlink时突然发现了这货具有相对链接功能。
但看不出,属性里面写的是全路径。

马上开始实验,注意,创建symlink需要管理员权限

新建一个 1.txt 文件,随便写的东西保存。
然后使用以下命令,创建一个 link.txt 的symlink链接
mklink link.txt 1.txt
双击 link.txt,可以正常打开。
打开 link.txt 的属性,路径里面写的是全路径
但把 link.txt 剪切到其他地方,就会发现 link.txt 打不开了。
说明 link.txt 实际是相对链接

目前已测试
symlink 可以跨盘和跨多级父文件夹,可为文件夹创建链接,可为不存在的文件或文件夹创建链接。
目前发现winrar支持直接保存windows symlink(要在选项中开启 把符号链接看作链接),7zip和bandizip都直接当成文件来保存。其他压缩软件未知。

winrar 保存 symlink 后,也需要winrar来解压才能还原 symlink,其他解压软件解压时会生成一个同名空文件而不会生成symlink

symlink只能在NTFS文件系统上存在,但可以指向非NTFS文件系统的盘上的东西。

### 如何创建使用相对路径指向 EXE 文件的快捷方式 在 Windows 中,可以通过批处理脚本(BAT)创建带有相对路径的快捷方式。这使得可以将启动器打包分发给他人,并确保即使文件位置改变仍能正常工作。 #### 方法一:通过命令行工具 `mklink` 和批处理脚本实现 虽然直接利用批处理创建 .lnk 文件较为复杂,但借助于 `mklink` 可以轻松建立符号链接作为替代方案之一: ```batch @echo off setlocal enabledelayedexpansion cd /d %~dp0 :: 创建软连接至当前目录下的 Tools 文件夹内的 exe 应用程序 mklink "MyApp.lnk" ".\Tools\SystemTool\RegistryFix.exe" pause ``` 此方法适用于希望创建类似于快捷方式的行为而不必严格依赖传统 `.lnk` 文件的情况[^5]。 #### 方法二:编写 VBS 脚本来生成真正的 LNK 快捷方式 对于更精确控制的需求,则推荐采用 VBScript 来完成任务。下面是一个简单的例子展示怎样构建一个针对特定可执行文件的快捷方式: ```vbscript Set objShell = CreateObject("WScript.Shell") strPath = Wscript.ScriptFullName Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(strPath) strFolder = objFSO.GetParentFolderName(objFile) ' 定义要创建的快捷方式名称和目标路径 Dim strLinkName : strLinkName = "myapp_shortcut.lnk" Dim strTargetPath : strTargetPath = "%CD%\tools\system_tool\registryfix.exe" ' 设置图标参数等其他属性 objShell.CreateShortcut(strFolder & "\" & strLinkName).TargetPath=strTargetPath With objShell.CreateShortcut(strFolder & "\" & strLinkName ) .WindowStyle = 1 ' 默认窗口样式 .IconLocation = strTargetPath & ", 0" ' 图标来自exe本身第一个icon .Save() End With ``` 这段代码会基于当前位置创建一个新的快捷方式文件 (`myapp_shortcut.lnk`) 并设置其目标为相对于该脚本所在位置的一个子文件夹里的应用程序[^1]。 #### 注意事项 当涉及到不同版本的操作系统时,请确认所使用的功能兼容性;另外,在某些情况下可能需要管理员权限才能成功创建这些类型的链接或快捷方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值