Windows 下创建软链接的几种方式
在 Windows 环境中,软链接(Symbolic Link / Junction) 是实现目录重定向、磁盘迁移、环境隔离(如 JDK、Maven 仓库)的核心技术基础。
下面从 工具支持、命令方式、适用场景、权限要求 等维度,系统介绍 Windows 下常见的几种创建软链接方式。
一、方式一:使用 Junction 工具(Sysinternals)
1.1 适用场景
-
主要用于 目录级链接
-
兼容性好,适合老版本 Windows
-
常用于:
-
.m2/repository迁移 -
大目录转移到数据盘
-
⚠️ 注意:Junction 本质是 NTFS Junction(目录重解析点) ,
不等同于真正的 Symbolic Link,但在绝大多数场景下表现一致。
1.2 工具下载
官方地址(Microsoft Sysinternals):
https://docs.microsoft.com/zh-cn/sysinternals/downloads/junction
下载后建议解压至:
C:\Windows\System32
以便全局使用。
1.3 创建软链接(需管理员权限)
bash
# 创建软链接
junction -s C:\Users\Administrator\.m2\repository D:\repository
junction -s C:\Users\vincent\.m2\repository D:\repository
含义说明:
junction -s <链接路径> <真实目录>
1.4 删除软链接(不会影响真实目录)
bash
junction -d C:\Users\Administrator\.m2\repository
1.5 特点总结
| 维度 | 说明 |
|---|---|
| 链接类型 | Junction(目录) |
| 是否需要管理员 | 是 |
| 是否支持文件 | 否 |
| 稳定性 | ⭐⭐⭐⭐ |
| 推荐指数 | ⭐⭐⭐⭐ |
二、方式二:PowerShell 创建 SymbolicLink(官方推荐)
2.1 适用场景
-
Windows 10 / 11 推荐方式
-
支持 文件 & 目录
-
语义清晰,脚本友好
2.2 创建软链接(需管理员权限,或开启开发者模式)
bash
# 创建 JDK 软链接
New-Item -ItemType SymbolicLink -Path "D:\jdk\default" -Target "D:\jdk\jdk1.8.0_471" -Force
New-Item -ItemType SymbolicLink -Path "D:\jdk\default" -Target "D:\jdk\jdk-17.0.17" -Force
2.3 删除软链接
(Get-Item "D:\jdk\default").Delete()
⚠️ 该命令只会删除链接本身,不会删除目标目录。
2.4 特点总结
| 维度 | 说明 |
|---|---|
| 链接类型 | SymbolicLink |
| 是否需要管理员 | 是(或开发者模式) |
| 是否支持文件 | 是 |
| 可读性 | ⭐⭐⭐⭐⭐ |
| 推荐指数 | ⭐⭐⭐⭐⭐ |
三、方式三:CMD 原生命令 mklink
3.1 适用场景
-
纯 CMD / 批处理环境
-
对 Windows 原生命令依赖最小
3.2 创建目录软链接(需管理员权限)
bash
# 建立 D:\jdk\default → D:\jdk\jdk1.8.0_471
mklink /d D:\jdk\default D:\jdk\jdk1.8.0_471
参数说明:
/d 创建目录符号链接
3.3 删除软链接(重要!)
rmdir D:\jdk\default
⚠️ 严禁使用 del
del 会删除目标目录中的真实文件。
3.4 特点总结
| 维度 | 说明 |
|---|---|
| 链接类型 | SymbolicLink |
| 是否需要管理员 | 是 |
| 是否支持文件 | 是 |
| 易用性 | ⭐⭐⭐ |
| 推荐指数 | ⭐⭐⭐⭐ |
四、方式四:Git Bash + MSYS 环境变量(强烈推荐)
4.1 适用场景
-
Git Bash / zsh / bash 用户
-
需要 Linux 风格脚本
-
JDK / Node / Maven / 多环境切换
4.2 配置软链接支持(一次性)
echo 'export MSYS="winsymlinks:nativestrict"' >> ~/.bashrc
或(zsh):
echo 'export MSYS="winsymlinks:nativestrict"' >> ~/.zshrc
生效配置:
source ~/.bashrc # 或 source ~/.zshrc
4.3 创建软链接(无需管理员权限,需开发者模式)
ln -s /d/jdk/jdk1.8.0_461 /d/jdk/default
删除:
rm /d/jdk/default
4.4 特点总结
| 维度 | 说明 |
|---|---|
| 链接类型 | 原生 SymbolicLink |
| 是否需要管理员 | 否(开发者模式) |
| 是否支持文件 | 是 |
| 自动化能力 | ⭐⭐⭐⭐⭐ |
| 推荐指数 | ⭐⭐⭐⭐⭐ |
五、方式五:封装 alias,实现"一键切换"(进阶)
在 Git Bash / zsh 环境中,可将软链接操作封装为 alias,实现环境秒切。
5.1 jdk多环境切换alias示例
shell
# 允许 Git Bash 创建原生 Windows 软链接
export MSYS="winsymlinks:nativestrict"
# 默认软链接入口
export JDK_DEFAULT="/d/jdk/default"
# JDK 路径
export JDK8_PATH="/d/jdk/jdk1.8.0_471"
export JDK17_PATH="/d/jdk/jdk-17.0.17"
export JDK21_PATH="/d/jdk/jdk-21.0.9"
export JDK25_PATH="/d/jdk/jdk-25.0.1"
# 切换命令封装(在Git Bash执行)
alias jdk8="rm $JDK_DEFAULT && ln -s $JDK8_PATH $JDK_DEFAULT && java -version"
alias jdk17="rm $JDK_DEFAULT && ln -s $JDK17_PATH $JDK_DEFAULT && java -version"
alias jdk21="rm $JDK_DEFAULT && ln -s $JDK21_PATH $JDK_DEFAULT && java -version"
alias jdk25="rm $JDK_DEFAULT && ln -s $JDK25_PATH $JDK_DEFAULT && java -version"
默认情况下,Windows 创建软链接需要管理员权限。
开启 开发者模式 后,可避免每次都"以管理员身份运行"。
-
Win + I→ 打开 设置 -
系统 → 开发者选项
-
打开 开发者模式(Developer Mode)
开启后,普通权限下的 Git Bash 也可正常执行
ln -s
六、几种方式的选型建议
| 场景 | 推荐方式 |
|---|---|
| Maven 仓库迁移 | Junction / PowerShell |
| JDK 多版本切换 | Git Bash + alias |
| 纯 Windows 批处理 | mklink |
| 自动化脚本 | PowerShell / Bash |
| 团队长期方案 | Git Bash + SymbolicLink |
七、总结
-
软链接是 Windows 开发效率的隐藏神器
-
一旦理解并掌握:
-
JDK / Node / Maven / Docker 目录迁移
-
多版本共存
-
环境隔离
-
-
都可以做到 零侵入、可回滚、可自动化
在 Windows 上,
真正的工程化环境管理,一定绕不开软链接。