subst 是什么
subst 把本机某个深层目录映射成一个盘符,命令行、脚本和只认盘符的老程序就能用短路径访问它。最典型的用途是绕开路径过长(超过 260 字符)导致解压、编译失败的问题。映射只存在于当前登录会话,重启即失效,而且运行在 Session 0 的系统服务一般看不到这些虚拟盘符,所以它属于临时手段而非长期方案。
基本信息
| 适用平台 | Windows CMD / PowerShell |
|---|---|
| 建立映射 | subst 盘符: 目录 |
| 查看现有 | subst(不带参数) |
| 解除映射 | subst 盘符: /d |
| 生效范围 | 当前登录会话,重启后失效 |
典型使用场景
- 路径过长导致解压、编译失败时,把项目根映射成 W: 压缩路径前缀
- 老程序对 UNC 网络路径不友好,先造一个本地盘符再运行
- 团队统一工作盘符,脚本里的路径更短更稳定
- 把多层目录下的日志集中映射到 L:,排障时少敲长路径
- 同一登录会话下多个命令行窗口复用同一个短路径
- 临时把只读介质上的目录挂成盘符,方便对照比对
常用示例
常用示例
subst REM 列出当前所有映射
subst W: D:\Workspace\client-a\very-deep-project REM 建立映射
pushd W:\ REM 切换到虚拟盘工作
subst W: /d REM 用完解除映射
REM 需要开机自动建立:在登录触发的计划任务里执行同一行
REM 目录不存在时 subst 报 Invalid parameter,先核对路径拼写可见性对照
| 使用场景 | 能否看到映射 | 说明 |
|---|---|---|
| 当前及新开的命令行窗口 | 可见 | 同一登录会话内共享 |
| Windows 服务(Session 0) | 通常不可见 | 不要给服务配置 subst 盘符 |
| 重启之后 | 失效 | 需要重新建立映射 |
| 同机其他登录用户 | 不可见 | 映射按会话隔离 |
需要长期、全机器可用的目录映射,优先用 mklink /J 建立目录联接,或用共享加 net use 映射网络驱动器;subst 的定位是会话级临时手段。
subst 不复制数据也不占空间,只是给目录起个别名;删除映射用 /d,直接对虚拟盘执行格式化会波及背后的真实目录,务必看清盘符再动手。