外部驱动器盘符可变时,如何映射UNC名称至该驱动器?
固定UNC名称访问盘符变动的外部驱动器
方案1:自动本地共享脚本(通用所有格式)
通过脚本识别驱动器卷标,自动创建/更新本地共享,实现固定UNC路径访问:
- 编写批处理脚本(保存为
AutoSharePergamum.bat):
@echo off set "driveLabel=pergamum" set "shareName=pergamum" :: 查找匹配卷标的驱动器盘符 for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "VolumeName='%driveLabel%'" get DeviceID /value') do ( set "targetDrive=%%d" ) :: 删除旧共享(如果存在) net share %shareName% /delete >nul 2>&1 :: 创建新共享 if defined targetDrive ( net share %shareName%=%targetDrive% /grant:everyone,full >nul 2>&1 echo 共享已就绪:\\%computername%\%shareName% ) else ( echo 未找到卷标为%driveLabel%的驱动器 )
- 设置自动运行:
- 打开「任务计划程序」,创建新任务
- 触发器选「当特定事件被记录时」,事件来源选
Disk,事件ID填2003(驱动器接入事件) - 操作选「启动程序」,指向刚才的批处理脚本,勾选「使用最高权限运行」
之后每次接入驱动器,都会自动创建\\你的电脑名\pergamum的共享路径,不管盘符是D还是E。
方案2:NTFS链接+共享(仅NTFS格式驱动器)
用系统自带的链接命令绑定驱动器,再共享链接文件夹:
- 编写批处理脚本(保存为
AutoLinkPergamum.bat):
@echo off set "driveLabel=pergamum" set "junctionPath=C:\pergamum_link" set "shareName=pergamum" :: 查找目标驱动器盘符 for /f "tokens=2 delims==" %%d in ('wmic logicaldisk where "VolumeName='%driveLabel%'" get DeviceID /value') do ( set "targetDrive=%%d" ) :: 删除旧链接 if exist "%junctionPath%" rmdir "%junctionPath%" :: 创建新链接并更新共享 if defined targetDrive ( mklink /j "%junctionPath%" "%targetDrive%" net share %shareName%=%junctionPath% /grant:everyone,full >nul 2>&1 echo 链接和共享已就绪:\\%computername%\%shareName% ) else ( echo 未找到目标驱动器 )
- 同样通过「任务计划程序」设置驱动器接入时自动运行脚本,权限选最高权限。
方案3:直接固定驱动器盘符(最省心的替代方案)
其实可以彻底解决盘符变动问题,给驱动器分配固定盘符:
- 右键「此电脑」→「管理」→「磁盘管理」
- 找到你的外部驱动器分区,右键→「更改驱动器号和路径」
- 点击「更改」,选一个不常用的盘符(比如Z:),确定后,以后每次接入都会用这个盘符
- 之后把这个盘符共享为
pergamum,就能通过\\你的电脑名\pergamum固定访问
注意事项
- 所有脚本都需要管理员权限运行,任务计划里必须勾选「使用最高权限运行」
- 共享权限可以根据需求调整,比如把
/grant:everyone,full改成/grant:你的用户名,read设置只读 - FAT32格式驱动器不能用方案2,建议选方案1或3
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

