DOS命令行中的双引号

Posted hanford

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOS命令行中的双引号相关的知识,希望对你有一定的参考价值。

 

DOS命令窗口下,运行C:\\Program Files\\WinRAR\\WinRAR.exe,提示如下错误:

因为C:\\Program Files\\WinRAR\\WinRAR.exe中含有空格,它被分成了两个部分:C:\\ProgramFiles\\WinRAR\\WinRAR.exeDOS命令窗口会把C:\\Program当做C:\\Program.exeC:\\Program.bat,而把Files\\WinRAR\\WinRAR.exe当做命令行参数传递给C:\\Program.exeC:\\Program.bat。因为C:\\Program.exeC:\\Program.bat都不存在,所以显示了上图所示的错误信息。

解决办法就是加上双引号,如下图所示:

这样,DOS命令窗口就知道要执行C:\\Program Files\\WinRAR\\WinRAR.exe了。

还可以这样加双引号:

所以:DOS命令行中的双引号一般情况下都会被忽略掉,它的作用仅仅是防止空格被当做分隔符。

现在,如下图所示,想给程序vsyasm.exe传递一个参数,此参数就是一个双引号。结果就是vsyasm根本接收不到双引号这个参数。

此时,命令应该写成这样:

也就是说:DOS命令行中的\\"会被解释为"

接下来,坑来了。如下图所示:调用vsyasm.exe编译d:\\1.asm,输出目录被设置为c:\\

上述命令行预期的是被分成四部分:

vsyasm 

-o 

c:\\ 

d:\\1.asm 

事实上却是被分成了三个部分:

vsyasm 

-o 

c:" d:\\1.asm 

都是\\"惹的祸。解决办法是这样的,如下图所示:

上述命令行被分成预期的四部分:

vsyasm 

-o 

c:\\ 

d:\\1.asm 

也就是说:双引号前的两个反斜杠会被替换为一个。上图双引号内的反斜杠后面紧跟着双引号,所以两个反斜杠被解释为一个反斜杠,同时右边的双引号说明字符串结束了。

再看看下图所示的命令行会被解释成什么?

双引号内部的反斜杠后面紧跟着双引号,所以前两个反斜杠被解释为一个反斜杠,\\"被解释为字符串内部的双引号,因为字符串未结束,所以后面的 d:\\1.asm也会和 c:\\"连接起来,最终被解释为三部分:

vsyasm 

-o 

c:\\" d:\\1.asm 

总之:DOS命令行中的\\"就是一个大坑,需要慎之又慎。

以上是关于DOS命令行中的双引号的主要内容,如果未能解决你的问题,请参考以下文章

将python中的双引号shell命令传递给subprocess.Popen()?

如何在dos窗口打引号 “

PHP命令行中的换行符

关于dos命令行方式的一些解释

JAVA-初步认识03-第一章命令行

DOS中的特殊符号