Похоже, вам нужна базовая c функциональность программы на C ++, предоставляемой методом main(int argc, char* argv[])
(при необходимости обратитесь к этой документации: https://en.cppreference.com/w/cpp/language/main_function).
С argc
- количество аргументов и argv
- массив со значениями аргументов. Я предполагаю, что ваше приложение создает GUI с Qt или некоторой библиотекой, которую вам не нужно запускать, если запустить в пакетном режиме.
В зависимости от сложности аргументов, которые вам нужно обработать, вы может разобраться с очень простой c структурой для анализа аргументов.
Пример псевдокода
main(argc, argv) {
if (argc == 0) {
startProgramInNormalGUIMode();
exit(0);
}
// This could be a sub method "parse(argc, argv)"
String parameter="";
Boolean executed=false;
for (i=0; i < argc; ++i) {
if element == "close" {
set parameter = argv[i+1];
i++; // skip next element which was the parameter
// myCloseOperation would check if parameter is
// "all" for example and closes all windows
// or treat any other value as window title for
// example and closes only the matching window.
myCloseOperation(parameter);
set executed = true;
}
if element == "operation2" {
set parameter = argv[i+1];
i++;
myOperation2Method(parameter);
set executed = true;
}
}
if (executed == false) {
showSyntaxErrorMessage();
exit(1);
}
exit(0);
}
Приведенный выше псевдокод предполагает, что каждая операция имеет идентифицирующее имя и только один параметр, следующий за ним. Вы можете изменить код так, чтобы он также допускал нулевые параметры или более одного и соответственно изменял приращение i
.
Вы также можете добавить проверку, если строка параметра или операции начинается с da sh или sla sh или какого-либо другого префикса, который вы хотите.
Также предполагается, что операция и ее параметры могут встречаться в командной строке более одного раза, и каждый случай будет выполнен. Например, wg close aWindowTitle close anotherWindowTitle close all
будет проанализирован как действительный, и будут выполнены три операции закрытия.