windows cmd 轉義字符和雙引號


不得不說,微軟的程序寫的真是一言難盡,這個cmd的雙引號機制也沒有一個官方的文檔給你講清楚點。
首先我們知道的是,如果沒有引號,cmd是用空格來分割參數的。如果一個參數有空格,就需要用雙引號包圍起來。
比如:

parm hello world

就給parm傳了兩個參數helloworld

parm "hello world"

用引號包圍后,parm就只有一個參數hello world

這種想必常用cmd的都知道,本文主要問題在,我要這樣寫呢:

parm hel"lo world"
parm hello" world""ok"
parm """hello"""

這樣就麻煩多了,你可以自己先寫個程序玩一玩看看。我寫了個程序測試:

展開代碼
#ifdef __cplusplus
#include <iostream>
using namespace std;

#else
#include <stdio.h>
#endif

int main(int argc, char* argv[])
{
#ifdef __GNUC__
    printf("compile with gcc/g++ %d.%d.%d ", __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
#elif _MSC_VER
    printf("compile with msvc %d ", _MSC_VER);
#endif

#if defined(__DATE__) && defined(__TIME__)
    printf(" %s %s\n", __DATE__, __TIME__);
#endif

    for (int i = 1; i < argc; i++) {
        printf("arg %d: %s\n", i, argv[i]);
    }

    return 0;
}

關於具體的引號解析策略,等有空了再具體看這篇文章學習學習,然后更博
https://stackoverflow.com/questions/7760545/escape-double-quotes-in-parameter/15262019


免責聲明!

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



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