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

因为C:\Program Files\WinRAR\WinRAR.exe中含有空格,它被分成了两个部分:C:\Program和Files\WinRAR\WinRAR.exe。DOS命令窗口会把C:\Program当做C:\Program.exe或C:\Program.bat,而把Files\WinRAR\WinRAR.exe当做命令行参数传递给C:\Program.exe或C:\Program.bat。因为C:\Program.exe和C:\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命令行中的\"就是一个大坑,需要慎之又慎。

最新文章

  1. matlab里的svmtrain的输出model里,各参数的含义
  2. SQL2008触发器
  3. perl 登陆电信猫
  4. asp.net MVC中的AppendTrailingSlash以及LowercaseUrls
  5. Mac上svn报错解决方案
  6. 【原】The Linux Command Line - Redirection
  7. XShell+Xmanager实现在XShell中显示远程服务器的图形界面
  8. Flv的结构分析
  9. codeforces 185A Plant(推公式)
  10. 安装crf++
  11. redis-server进程CPU百分百问题
  12. 浅析PCIe链路LTSSM状态机
  13. mysql 取当前日期对应的周一或周日
  14. SSD-Tensorflow 从工程角度进行配置
  15. 解决Js跨域访问的问题
  16. set get方法诡异的空指针异常
  17. LINUX系统下的squid服务
  18. 2017.9.2Java中的自定义类型的定义及使用&&自定义类的内存图
  19. js文字跳动效果
  20. C趣味题目

热门文章

  1. 2016年12月15日 星期四 --出埃及记 Exodus 21:10
  2. windows7安装phpnow Apache非管理员权限不能操作Windows NT服务的解决方法
  3. shell脚本之间互相调用
  4. iOS静态库和动态库的区别
  5. CodeForces 549G Happy Line
  6. [转]SIP穿越NAT&FireWall解决方案
  7. SQL判断临时表是否存在
  8. sp_getTable_data
  9. Redis实践操作之—— keyspace notification(键空间通知)
  10. hdu5816 卡特兰数+dp