Windows鏈(lian)(lian)接創建神器:一(yi)鍵生成符號鏈(lian)(lian)接與硬(ying)鏈(lian)(lian)接的智能批處理工具【NuGet】
【自(zi)用(yong)(yong)工具】NuGet 或各項(xiang)目(mu)中共(gong)用(yong)(yong)部(bu)分目(mu)錄或文(wen)(wen)件,利用(yong)(yong)DOS符號鏈(lian)接(jie)解決重復(fu)文(wen)(wen)件的(de)多份拷貝,起到(dao)節省磁盤(pan)空間的(de)作(zuo)用(yong)(yong)。 告別復(fu)雜的(de)命令行操作(zuo)!這(zhe)款增(zeng)強版批處理腳本讓Windows鏈(lian)接(jie)創建變(bian)得簡(jian)單(dan)、直(zhi)觀(guan)且美(mei)觀(guan)
在Windows系統中,符號鏈接和硬鏈接
為什么要(yao)使用鏈接?
-
節省磁盤空間
-
跨磁盤訪問:符號鏈接允許不同磁盤間的無縫訪問
-
開發效率:在多個(ge)項目間共(gong)享庫文(wen)件而無需同步
-
系統優化:將占用空(kong)間(jian)大的目錄重定向到其他驅動器
mklink /D "C:\Link" "D:\Target"
傳(chuan)統方法(fa)需要:
-
-
手(shou)動(dong)處理路(lu)徑沖(chong)突
-
沒(mei)有錯誤(wu)診斷
-
純文(wen)本界面(mian)不直觀
-
解決(jue)方案:智能(neng)鏈接創(chuang)建工(gong)具
我開發(fa)了一款功能強大的(de)批(pi)處理腳本,解決了所有這些(xie)問題:
主要(yao)功能(neng)亮點
| 功能 | 描(miao)述 | 優勢(shi) |
|---|---|---|
| 直觀菜單界面 | 所有功能一目了(le)然 | 無需記憶(yi)命令參(can)數 |
| 智能路徑驗證 | 自動(dong)檢查路徑存在性 | 防止無(wu)效(xiao)操作(zuo) |
| 沖突解決方案 | 自動處理已存(cun)在路(lu)徑 | 安全刪除或重命名 |
| 實時錯誤診斷 | 詳細錯誤原(yuan)因(yin)分析 | 快速解決(jue)問題 |
| 視覺反饋系統 | 留給大家自己創作 | 按自己的(de)習慣調整 |
技(ji)術特點(dian)
-
ANSI轉義序列:視(shi)覺反(fan)饋的方式建議用(yong)這個技(ji)術來實現(xian)
-
錯誤代碼處理:捕獲并解釋所有可能錯(cuo)誤
-
路徑規范化:自(zi)動處理引號和特殊字符
-
緩存延遲處理:解決文(wen)件(jian)系統刷新問題
-
管理員權限檢測:確保操作成功執行
使用指南
安裝與(yu)運(yun)行
-
將腳本保存為
CreateLink.cmd -
右鍵選擇"以管理員身份運行"
使用示(shi)例
場景1:創建跨磁盤目錄符號鏈接
1. 選擇 [1] 目錄符號鏈接
2. 源路徑: D:\Project\Assets
3. 鏈接路徑(jing): C:\CurrentProject\Assets
場景2:為大型數據文件創建硬鏈接
1. 選擇 [3] 硬鏈接
2. 源路徑: E:\Data\dataset.bin
3. 鏈(lian)接路徑: E:\Analysis\input.bin
實(shi)際應用場景
開發(fa)環境(jing)配置
[目錄符號鏈接] 將公共庫鏈接到多個項目:
源路徑: D:\Dev\SharedLib
鏈接路徑: C:\ProjectA\libs\SharedLib
鏈接(jie)路徑: C:\ProjectB\vendor\SharedLib
游戲(xi)資源(yuan)管理
[文件符號鏈接] 在不同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
獲(huo)取(qu)腳本
@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.