CMD 空格转义与路径处理方法

三种方法, 总有一种会解决问题

在 Windows 命令提示符 (CMD) 中, 如果路径中包含空格, 很容易引发命令执行错误。因此, 我们通常会采用以下几种方法来处理路径中的空格问题

方法 1: 用双引号包裹路径

对于包含空格的路径, 可以使用双引号来将路径括起来。这样 CMD 会将整个路径识别为一个整体。

"D:/Program Files/xx"

方法 2: 使用 DOS 8.3 命名规则 (短文件名)

在早期的 DOS 系统中, 不允许文件夹名称中带空格, 因此采用了 8 个字符命名规则 (8.3 格式)。这种格式为前 6 个字符加上 ~ 符号和一个数字表示序列。例如

D:/Progra~1/xx

Progra~1: 前 6 个字符加 ~ 符号及数字 1, 表示第一个匹配的文件夹。

多个文件夹具有相同的前 6 个字符时, 后缀数字顺序递增, 例如:

Program Files -> Progra~1
Progra file   -> Progra~2
Progra zhang  -> Progra~3

注意: 为了实现这样的缩写形式, 文件和文件夹必须已经存在。可以使用以下命令查看文件的 8.3 格式:

dir /x

关于 8.3 命名规则的更多细节

对于长文件名 (包含空格或超过 8 个字符), Windows 会为其生成一个符合 8.3 规则的短文件名, 以保持兼容性。这些规则如下:

  1. 生成短文件名: 取前 6 个字符, 略去空格, 再加 ~ 和数字 1
  2. 处理冲突: 如果文件夹的前 6 个字符相同, 则递增数字表示不同的目录。

例如:

"Documents and Settings" -> DOCUME~1
"Local Settings"         -> LOCALS~1
"Temporary Files"        -> TEMPOR~1

如果前 6 个字符有重复:

Program Files -> Progra~1
Progra file   -> Progra~2
Progra zhang  -> Progra~3

方法 3: 使用 subst 命令映射虚拟磁盘

利用 subst 命令可以将包含空格的目录映射为一个虚拟磁盘, 这样就不必每次输入长路径。具体步骤如下:

  1. 映射虚拟磁盘:

    该命令会将 C:\Documents and Settings\hopeshared 目录映射为 B 盘

    subst B: "C:\Documents and Settings\hopeshared"
    
  2. 删除虚拟磁盘:

    subst B: /D
    
  3. 查看当前的虚拟磁盘映射

    subst
    

使用 subst 命令的更多场景

  • 虚拟软驱: 安装某些软件时需要从软盘开始, 但机器上没有软驱时, 可以使用 subst 来创建虚拟软驱

    subst A: C:\temp
    

    然后将 A: 盘符加入 Autoexec.bat 文件中, 即可在系统启动后将 C:\temp 目录映射为 A:

  • 隐藏软驱: 将一个目录属性设置为 “只读”、“隐藏”, 然后映射为软盘的盘符, 可以隐藏软盘的实际内容。


原文

CmD空格转义
虚拟磁盘命令Subst使用详解

最后更新于 2018-03-17
使用 Hugo 构建
主题 StackJimmy 设计