命令行操作整理

来源:互联网 发布:截至到现在淘宝总额 编辑:程序博客网 时间:2024/05/25 23:29

由CCommandLineInfo继承一个子类,

 

CCommandLineInfoSubClass  cmdInfo;

 

    //调式版和Release版还不相同
    //由调用者传进来的时候, i = 0;
    //由IDE中带参数进行调试的时候, i = 1
    int nStartByIDE = 0;
    for (int i = nStartByIDE; i < __argc; i++)
    {
        LPCTSTR pszParam = __targv[i];
        BOOL bFlag = FALSE;
        BOOL bLast = ((i + 1) == __argc);
        if (pszParam[0] == '-' || pszParam[0] == '/')
        {
            // remove flag specifier
            bFlag = TRUE;
            ++pszParam;
        }
        cmdInfo.ParseParam(pszParam, bFlag, bLast);
    }

 

重载子类的ParseParam

virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast);

 

把pszParamz中得来的参数一个一个的放到约定的不同数据中.

 

跟进CCommandLineInfo里面看一下.

 

<2010_1113_1346>

 

参考:

Console app using MFC

http://www.codeguru.com/cpp/misc/misc/consoleapps/article.php/c243/

 

<2010_1113_2127>

CCommandLineInfo本身的处理不灵活, 只能接受一个参数.

 

找到一个灵活的命令行处理类, 正是想要的效果

Managing argc and argv[] with STL in a simple way
http://www.codeproject.com/KB/cpp/arguments.aspx

构建参数格式输入和判断参数都非常方便.
程序接受命令行参数效果等同于在程序内容读参数文件,
不同的地方是, 如果程序不是自己主动运行,而是由调用者来运行. 那程序接受命令行方式
简化了2个程序之间的交互. 实际工程中一个程序调用另外一个程序来处理调用者不方便处理的任务,就会用到命令行参数.

为了保证分析命令行时argc和argv能和实际的调用方式相同, 要确定在ide中的调试参数输入.
实际调用的命令行输入:

IDE调试参数的输入:


这个Arguments架子挺好,简洁,易用. 不好的地方是不能输入 -usrname=usr1, 只能按照顺序输入 usr1 "programe files/xx",
今天改了下没改过。那明天从头搭起来,慢慢调吧。

<2010_1115>
程序完成。
可以接受 -xxxx的输入, 比mfc自带的CCommandLineInfo好用的多.
/**
* @note
* 测试时用的命令行参数是:
* -useUKey -UseTempFile c:/tmp1 c:/tmp2/ -MemoryInformation 256M
*/

需要改进的地方, 构造参数输入的时候,还不是特别方便.






















命令行预定义格式




运行结果




下载点






原创粉丝点击