命令行如何处理windows含空格的目录

在命令行下,进入某个含空格的目录,可以通过对目录加双引号来解决 比如:

cd "C:\Program Files"


但是要设置环境变量的话,双引号的办法就行不通了,比如: set PATH="C:\Program Files\UltraISO\bin"

设置虽然不报错,但是因为多了双引号,windows系统就认不到设置的目录,没用。

这个时候可以通过空格目录缩写来达到目的,还是上面的例子,改为 

set PATH="C:\PROGRA~1\UltraISO\bin"


那么问题来了,"Program Files"为什么要缩写成"PROGRA~1",缩写规则是怎样定义的?

规则: 目录头6个字母(略去空格) + 波浪号 + 数字(从1算起)

比如: "Documents and Settings" -> "DOCUME~1"

          "IBM Informix Dynamic Server" -> "IBMINF~1"


可是问题又来了,如果几个目录的头6个字母都相同,怎么办?

比如,三个目录: “TEST DIR1”、"TEST DIR2"、“TEST DIR3”,前6个字母都是"TESTDI"

那么就只有通过最后1位阿拉伯数字来区分了,但,谁1,谁2?

答案是根据目录名的ASCII码排序,学过C语言的应该都明白

三个目录的ASCII码值

"TEST DIR1" < "TEST DIR2" < "TEST DIR3"

所以三个目录的缩写:

"TEST DIR1" -> "TESTDI~1"

"TEST DIR2" -> "TESTDI~2"

"TEST DIR3" -> "TESTDI~3"


你可能感兴趣的:(命令行如何处理windows含空格的目录)