【自用工具】NuGet 或各项目中共用部分目录或文件,利用DOS符号链接解决重复文件的多份拷贝,起到节省磁盘空间的作用。 告别复杂的命令行操作!这款增强版批处理脚本让Windows链接创建变得简单、直观且美观
在Windows系统中,符号链接 和硬链接 是强大的文件系统功能,它们允许我们创建文件或目录的"虚拟副本",而无需占用额外磁盘空间。然而,使用传统的命令行工具创建这些链接往往令人望而生畏 - 直到现在!
为什么要使用链接?
-
节省磁盘空间 :多个位置访问同一文件,无需复制
-
跨磁盘访问 :符号链接允许不同磁盘间的无缝访问
-
开发效率 :在多个项目间共享库文件而无需同步
-
系统优化 :将占用空间大的目录重定向到其他驱动器
传统方法的痛点
mklink /D "C:\Link" "D:\Target"
传统方法需要:
-
记忆复杂的命令参数
-
手动处理路径冲突
-
没有错误诊断
-
纯文本界面不直观
-
必须使用管理员权限
解决方案:智能链接创建工具
我开发了一款功能强大的批处理脚本,解决了所有这些问题:
主要功能亮点
功能 | 描述 | 优势 |
---|---|---|
直观菜单界面 | 所有功能一目了然 | 无需记忆命令参数 |
智能路径验证 | 自动检查路径存在性 | 防止无效操作 |
冲突解决方案 | 自动处理已存在路径 | 安全删除或重命名 |
实时错误诊断 | 详细错误原因分析 | 快速解决问题 |
视觉反馈系统 | 留给大家自己创作 | 按自己的习惯调整 |
技术特点
-
ANSI转义序列 :视觉反馈的方式建议用这个技术来实现
-
错误代码处理 :捕获并解释所有可能错误
-
路径规范化 :自动处理引号和特殊字符
-
缓存延迟处理 :解决文件系统刷新问题
-
管理员权限检测 :确保操作成功执行
使用指南
安装与运行
-
将脚本保存为
CreateLink.cmd
-
右键选择"以管理员身份运行"
使用示例
场景1:创建跨磁盘目录符号链接
1. 选择 [1] 目录符号链接
2. 源路径: D:\Project\Assets
3. 链接路径: C:\CurrentProject\Assets
场景2:为大型数据文件创建硬链接
1. 选择 [3] 硬链接
2. 源路径: E:\Data\dataset.bin
3. 链接路径: E:\Analysis\input.bin
实际应用场景
开发环境配置
[目录符号链接] 将公共库链接到多个项目:
源路径: D:\Dev\SharedLib
链接路径: C:\ProjectA\libs\SharedLib
链接路径: C:\ProjectB\vendor\SharedLib
游戏资源管理
[文件符号链接] 在不同MOD间共享资源:
源路径: E:\Games\Assets\textures.pak
链接路径: C:\Mod1\resources\textures.pak
链接路径: C:\Mod2\assets\textures.pak
数据科学工作流
[硬链接] 在不同分析中重用大型数据集:
源路径: F:\Datasets\2023\financial.csv
链接路径: F:\Analysis\Q1\input.csv
链接路径: F:\Analysis\Q2\source.csv
获取脚本
@echo off
setlocal enabledelayedexpansion
:MAIN_MENU
cls
echo.
echo ==============================
echo Windows 链接创建工具By liuxw
echo ==============================
echo 1. 创建目录符号链接 (支持跨磁盘)
echo 2. 创建文件符号链接 (支持跨磁盘)
echo 3. 创建硬链接 (仅限同一磁盘的文件)
echo 4. 退出
echo.
choice /c 1234 /n /m "请选择操作类型 [1-4]: "
if %errorlevel% equ 1 goto SYMBOLIC_DIR
if %errorlevel% equ 2 goto SYMBOLIC_FILE
if %errorlevel% equ 3 goto HARD_LINK
if %errorlevel% equ 4 exit /b
:SYMBOLIC_DIR
set "link_type=/D"
set "type_name=目录符号链接"
goto GET_PATHS
:SYMBOLIC_FILE
set "link_type="
set "type_name=文件符号链接"
goto GET_PATHS
:HARD_LINK
set "link_type=/H"
set "type_name=硬链接"
:GET_PATHS
echo.
echo 正在创建: [%type_name%]
echo.
:GET_TARGET
set /p "target_path=请输入源文件/目录路径: "
if not exist "!target_path!" (
echo.
echo [错误] 源路径不存在: "!target_path!"
echo 请检查路径是否正确
echo.
pause
goto GET_TARGET
)
:GET_LINK
set /p "link_path=请输入链接创建路径: "
if exist "!link_path!" (
echo.
echo [警告] 链接路径已存在: "!link_path!"
choice /c YN /n /m "是否删除现有路径? [Y/N]: "
if !errorlevel! equ 2 goto GET_LINK
echo 正在删除现有路径...
rd /s /q "!link_path!" 2>nul
if exist "!link_path!" (
del /f /q "!link_path!" 2>nul
)
if exist "!link_path!" (
echo.
echo [错误] 无法删除现有路径,可能被占用或无权限
echo 请手动删除或选择其他路径
echo.
pause
goto GET_LINK
)
)
:VALIDATE_HARD_LINK
if "%link_type%"=="/H" (
rem 检查硬链接限制
for %%d in ("!target_path!") do set "target_drive=%%~d"
for %%d in ("!link_path!") do set "link_drive=%%~d"
if not "!target_drive!"=="!link_drive!" (
echo.
echo [错误] 硬链接要求源文件和链接文件在同一磁盘
echo 源文件磁盘: !target_drive!
echo 链接磁盘: !link_drive!
echo.
pause
goto GET_LINK
)
rem 检查是否为文件
if exist "!target_path!\" (
echo.
echo [错误] 硬链接只能用于文件,不能用于目录
echo.
pause
goto GET_LINK
)
)
:CREATE_LINK
echo.
echo 正在创建链接...
echo 源路径: "!target_path!"
echo 链接路径: "!link_path!"
echo.
mklink %link_type% "!link_path!" "!target_path!" 2>nul
if %errorlevel% equ 0 (
echo [成功] %type_name% 创建成功!
echo.
) else (
echo.
echo [错误] 链接创建失败 (错误代码: %errorlevel%)
)
echo.
echo 请手动验证链接:
echo 1. 检查链接路径: "!link_path!"
echo 2. 尝试访问该位置
echo 3. 查看属性中的"目标"字段
echo.
echo 如果发现没有建立成功,可能原因:
echo - 未使用管理员权限运行
echo - 路径包含无效字符
echo - 文件系统不支持此链接类型
echo - 目标路径不存在
pause
goto MAIN_MENU
结语
这款增强版链接创建工具将复杂的命令行操作转化为直观的用户体验,通过:
-
智能验证 :自动检查路径和权限
-
错误预防 :详细的诊断信息
-
安全机制 :谨慎处理文件操作
无论您是开发人员、系统管理员还是高级用户,这个工具都能显著提高您在Windows系统中管理文件和目录的效率。