Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
1

Вывод текста описания команд в консоль командной строки при запуске программы через командную строку

21.10.2014, 09:26. Просмотров 1612. Ответов 20
Метки нет (Все метки)

Всем привет! Есть такая программка которая запускается через командную строку с параметром, например :

C:\папка\spectr.exe /А

При таком запуске программа запустится с каким то установленным параметром. При /B будет установлен другой параметр, при /C - третий и так далее. Но, есть необходимость вывести в консоль командной строки текст с описанием этих самых команд. Например:

C:\папка\spectr.exe /?

/A - установка того то
/B - установка параметра того то
/C - установка того то параметра
и так далее.

Как это можно сделать? Поделитесь опытом, товарищи!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2014, 09:26
Ответы с готовыми решениями:

Не открывается файл при запуске через командную строку
Написал небольшую игру (скорее прототип игры). Игра загружает список уровней с...

Ошибка при запуске приложения через командную строку
подскажите, пожалуйста, в чем ошибка(почему не открывает файл)?

Не работает программа при запуске в Windows через командную строку
Дали задание скомпилить cmake под Linux. Там все получилось. Как доп.задание...

Написание текста в обратном порядке через командную строку
Помогите написать прогу которая после ввода текста пишет его в обратном...

Компиляция программы из файла cpp через командную строку
Допустим я написал этот код в стандартном виндовском блокноте #include...

20
LEQADA
Мастер кустарных методов
227 / 222 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 09:32 2
МихаилХ, таким же образом. Покажите код условий на параметры.
0
zss
Модератор
Эксперт С++
7470 / 6843 / 4320
Регистрация: 18.12.2011
Сообщений: 18,103
Завершенные тесты: 1
21.10.2014, 09:33 3
C++
1
2
3
4
5
6
7
8
9
char str[100];
cin.getline(str,100);
if(str[strlen(str)-1]=='?') // последний в строке знак вопроса
{
     cout<<"/A - установка того то"<<endl;
     cout<<"/B - установка того то"<<endl;
     cout<<"/C - установка того то"<<endl;
}else
    system(str);
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 10:03  [ТС] 4
Вот как пробовал я:
C++
1
2
3
4
5
6
7
8
if (temp2 == L"/?")
{
    CString temp2 = L"/K - кепстр\n/S - спектрограмма\n/D - 3d - спектрограмма\n/P - проходная\n";
    wprintf(L"%s\n", temp2.GetString());
    char s[10] = "ACHTUNG!";
    printf("%s\n", s);
    std::cout << "ACHTUNG!\n" << std::endl;
}
Ни один из способов результата не дал.
У меня mfc-шное приложение и, может по этому не получается вывести текст в консоль.
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 10:08 5
А что мешает проверить равенство параметра твоему "/?" и вывести что тебе надо?
0
LEQADA
Мастер кустарных методов
227 / 222 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 10:08 6
МихаилХ, вам подсказали уже. Не получается так?
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 10:09 7
zss, этот человек тебе уже привел пример)))
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 11:41  [ТС] 8
Нет этот пример не работает у меня. Я привел код своих попыток которые я предпринимал до того как обратился на форум.
0
LEQADA
Мастер кустарных методов
227 / 222 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 11:45 9
МихаилХ, покажите рабочий код того, как написали проверку для параметра /A.

Добавлено через 2 минуты
И да, опубликовали бы вы тему в разделе Visual C++...
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 12:16  [ТС] 10
Здесь код обработки команд. Команд не много. При той или иной команде устанавливаются нужные параметры в структуре параметров.
str - выпиленные из командной строки команды, записанные через точку с запятой.
nArg - количество команд.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    int count = 1;
    CString temp1, temp2;
    temp1 = str;
    while (true)
    {
        temp2 = temp1.Left( temp1.Find(L";"));
        temp1.Delete(0, temp1.Find(L";") + 1);
        if (temp2 == L"/D")
        {
            m_sParamNew.showParams.tdGrammaStart = 1;
            m_sParamNew.showParams.showTDGrammaWindow = 1;
        }
        if (temp2 == L"/S")
        {
            m_sParamNew.showParams.grammaStart = 1;
            m_sParamNew.showParams.showGrammaWindow = 1;
        }
        if (temp2 == L"/K")
        {
            m_sParamNew.showParams.kepstrStart = 1;
            m_sParamNew.showParams.showKepstrWindow = 1;
        }
        if (temp2 == L"/P")
        {
            m_sParamNew.showParams.prohStart = 1;
            m_sParamNew.showParams.showProhodWindow = 1;
        }
        if (temp2 == L"/?")
        {
            temp2 = L"/K - кепстр/S - спектрограмма/D - 3d - спектрограмма/P - проходная";
            wprintf(L"%s\n", temp2.GetString());
            char s[10] = "ACHTUNG!";
            printf("%s", s);
            std::cout << "ACHTUNG!" << std::endl;
            exit(0);
        }
        if (count >= nArg) break;
        count++;
    }
0
zss
Модератор
Эксперт С++
7470 / 6843 / 4320
Регистрация: 18.12.2011
Сообщений: 18,103
Завершенные тесты: 1
21.10.2014, 13:03 11
Цитата Сообщение от МихаилХ Посмотреть сообщение
char s[10] = "ACHTUNG!";
printf("%s", s);
std::cout << "ACHTUNG!" << std::endl;
Зачем выводить ACHTUNG! Сначала средствами Си, а потом потоковым выводом на cout?
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 13:18 12
А что показывает дебаг?
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 13:37  [ТС] 13
Потому что я использовал все что помнил для вывода текста в консоль. Вот только не один из них не сработал.

А что Дебаг должен был показать? В блок if заходит.
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 13:41 14
МихаилХ, посмотри дебагом что у тебя получается в temp2
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 13:48  [ТС] 15
Цитата Сообщение от Kverter Посмотреть сообщение
посмотри дебагом что у тебя получается в temp2
Посмотрел: собственно записанная мной строка там и лежит. А в чем конкретно сомнения?
0
Kastaneda
Jesus loves me
Эксперт С++
4948 / 3025 / 346
Регистрация: 12.12.2009
Сообщений: 7,627
Записей в блоге: 2
Завершенные тесты: 1
21.10.2014, 13:54 16
Странно, что MS еще аналог getopt() не написали (хотя 100% написали, только почему-то в WinAPI не включили).
Если mingw используешь, посмотри на getopt() и getopt_long(). Правда ключи придется передавать через '-', а не через '/'
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 14:17 17
МихаилХ, то есть у тебя в temp2 хранится "/?"
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 14:37  [ТС] 18
Цитата Сообщение от Kverter Посмотреть сообщение
то есть у тебя в temp2 хранится "/?"
Не после в хода в блок if в temp2 лежит
"/K - кепстр/S - спектрограмма/D - 3d - спектрограмма/P - проходная"
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 15:05 19
МихаилХ, а ахтунг то выводится?

Добавлено через 11 минут
МихаилХ, я не знаю что такое случилась там, но у меня
C++
1
wprintf(L"%s\n", temp2.GetString());
это работает
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 15:29  [ТС] 20
Цитата Сообщение от Kverter Посмотреть сообщение
это работает
Да в том то и дело что у меня ничего не выводится.
А вы из какого места программы делаете вывод?
Просто я делаю вывод в командную строку делаю из функции OnInitDialog().
Может я из того места вывожу?
0
21.10.2014, 15:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2014, 15:29

Как открыть программу написанную на c++ через командную строку, если в пути программы есть пробелы
путь программы C:\la la\ve.exe пишу в командной строке: start C:\la...

Почему при запуске программы в командной строке иероглифы
Привет! Подскажите, почему при запуске программы в командной строке иероглифы?

Убрать консоль при запуске программы
как сделать так чтобы при запуске программы на c++ не открывалась консоль?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru