본문 바로가기

3.구현/VC++

도스 프롬프트에서 명령어 옵션 처리

 

double optionType = 0;
LPCTSTR pszValue = NULL;

int main(int argc, char* argv[])
{
  // argc개수(옵션개수) 만큼 for문 실행
  if (argc < 2 || !ParseOptions(argc, argv) || pszURL == NULL)
    ShowUsage();

  // 값처리
}

void ShowUsage()
{
  cerr << _T("Usage:  PROGRAM [options] <Value>") << endl << endl;
 //...
}

BOOL ParseOptions(int argc, char* argv[]) {
  for (int nIndex = 1; nIndex < argc; nIndex++)
  {
    // an option
    // 옵션 값에서 '-' or '/' 찾아서 처리

    if (*argv[nIndex] == '-' || *argv[nIndex] == '/')
    {
       if (argv[nIndex][1] == 'H' || argv[nIndex][1] == 'h')
           optionType = optionType || OPT_CONFIG_HASH;
       else if (argv[nIndex][1] == '?' || argv[nIndex][1] == '?')
           optionType = optionType || OPT_CONFIG_HELP;
       else if (argv[nIndex][1] == 'R' || argv[nIndex][1] == 'r')
           optionType = optionType || OPT_CONFIG_HELP;
       else
       {
          cerr << _T("Error: unrecognized option: ") << argv[nIndex] << endl;
          return FALSE;
       }
    }
    else
    {
      if (pszValue != NULL)
      {
        cerr << _T("Error") << endl;
        return FALSE;
      }
      else
        pszValue = argv[nIndex];
    }
}

 

 

 

반응형