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命令行中的\"就是一個大坑,需要慎之又慎。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM