bat中Program Files与"Program Files"有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/07/01 11:58:40
运行11.BAT文件时:
当11.BAT文件里的代码是“c:\Program Files\Tencent\QQ\Bin\QQ.exe”时,运行11.bat显示找不到路径;
当11.BAT文件里的代码是“c:\"Program Files"\Tencent\QQ\Bin\QQ.exe”时,运行11.bat可以正常运行QQ;
这是为什么呢?

bat使用空格作为参数分割符,不带引号的Program Files相当于2个参数Program和Files
带引号后,则会是一个整体的变量或参数
例如:
cd Program Files
代表进入当前目录下得Program文件夹,后面的Files会省略
而cd "Program Files"则代表进入当前目录下的Program Files文件夹
还可以使用8.3的文件名格式表示,如cd Progra~1这种,这是长文件名的8.3文件格式,若同一文件夹有相似的名称,末端的数值则会自动递增

其实就是微软的命令行的Bug,它认为到第一空格为止是程序文件的名字
但是Program Files中间含有空格
所以不加引号,就认为
执行了
C:\Program 后面的是参数

因为Program Files中有一个空格,如果不加引号的话会解释为Program,空格后面的部分会被当成程序参数。加上引号以后表示是一个字符串,不会被分割解释。