Форум программистов, компьютерный форум CyberForum.ru

Как батником задать значение переменной программе Visual C++ - C++

Восстановить пароль Регистрация
 
GENDALF_ISTARI
 Аватар для GENDALF_ISTARI
-3 / 10 / 3
Регистрация: 20.08.2013
Сообщений: 631
06.04.2014, 23:55     Как батником задать значение переменной программе Visual C++ #1
пишу в Bat код

consol.exe -peremenna 55 -pluss 100
Pause


Екзешник consol.exe принемает код Батника запускаеться
и выполняет подсчет

и выводит на екран 55+100=155


к примеру код

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
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
string lang_russian (string a);
string lang_title (string b);
string colorConsol ();
 
int main () 
 
{
    system("cls");
    system("@ echo off");
    lang_russian ("");
    lang_title ("");
    colorConsol();
    
    
    cout<<"///////////////////////////////////Консоль////////////////////////////////////"<<endl;
    string str="";
 
    str=system("");
    //cin>>a;
 
    cout<<str<<endl;
    getchar();
 
    return 0;
}
 
string lang_russian (string a)
{
    a=setlocale(LC_ALL,"Russian");
    return a;
}
 
string colorConsol ()
{
    string a; 
    a=system("color 3f");
    return a;
}
 
string lang_title (string b)
{
    
    b=SetConsoleTitle(TEXT("777"));
    return b;
}
Мнеб хоть бы как нибудь заципиться как происходит

батником задать переменную EXE файлу С++
напишите ПОЖАЛУСТА
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
07.04.2014, 00:39     Как батником задать значение переменной программе Visual C++ #2
C++
1
int main (int argc, char* argv[])
Сделай такой заголовок. argc - количество параметров. argv[0] - путь к exe'шнику, все остальные argv[1], ... - это те, которые ты задашь в консоли. Это для терминала, хз как оно у тебя будет работать...
GENDALF_ISTARI
 Аватар для GENDALF_ISTARI
-3 / 10 / 3
Регистрация: 20.08.2013
Сообщений: 631
07.04.2014, 03:42  [ТС]     Как батником задать значение переменной программе Visual C++ #3
Спасибо шас пробую , напишу что получилось

Добавлено через 15 минут
папробывал хм интересно )))

прописываю батник
@ echo off
ru_1.exe argc 5
pause


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h>
#include <Windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main (int argc, char* argv[])
 
{
 
int i=0;
argv[i]="ru_1.exe";
 
cout<<argc<<endl;
getchar();
 
return 0;
}
выводит мне 3
удевительно
может неправильно что то делаю
масив использую , как происходит ввод
откуда 3 , что оно подсчитывает и как
а если я строку задам - оно вывидет мне
дай пожалуста код примера
почитаю может там зацепка
и терменалы ввода есть статья почитать ))) может там не только кансоль используют
и другие методы ввода
в батнику что задать ?

Добавлено через 1 час 23 минуты
протестил трохи понял задаються подсчет

@ echo off
ru_1.exe argc 5 77 88 88
pause

оно додает ru_1.exe=1 , argc =2 , 5=3 , 77=4, 88=5, 88=6

и того 6
типо в батнику отдельные строки

Добавлено через 4 минуты
а если вывести строку
или задать через батник значение переменной
там
@ echo off
ru_1.exe -peremenna_a 109 -peremenna_b 122
pause

ответ 109+122= 131 выведет


@ echo off
ru_1.exe -str шла маша по шосе , и сосала
pause

ответ выведет шла маша по шосе , и сосала

Добавлено через 17 минут
вот что взбрело

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Windows.h>
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int main (int argc, string* argv[])
 
{
 
string str[]={""};
string vas=str[argc];
 
cout<<vas<<endl;
 
getchar();
 
return 0;
}
Добавлено через 7 минут
это я думал если argc принимает подсчет строк в батнику
то он подобие getline
и я могу передать его str строке
и задав конткретное число в масиве
C++
1
2
3
4
5
6
7
8
string str[]={"fire","one","temp"};
 
string vas=str[1];  // 1 - єто вторая строка "one" , 0- єто первая "fire" , 2-єто "temp" , больше нету
 
cout<<vas<<endl; // выведе мне вторую "one" - потому что отсчет начинаеться с нуля             
                              //  как первая строка  "fire" 
                              // существует /0  єто нулевая строка, но єто другая история
getchar();
Добавлено через 4 минуты
думаю ответишь как правильно
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
07.04.2014, 03:59     Как батником задать значение переменной программе Visual C++ #4
argc - число аргументов при запуске программы, если программа запущена без аргументов то считается что аргумент 1(само имя программы)
argv - массив указателей на аргументы(строки), всегда содержит argv[0] - имя программы, и далее по порядку

вывести список всех аргументов:
C++
1
2
3
4
5
6
7
#include <iostream> 
 
int main(int argc, char *argv[]) {
    for(int i=0; i<argc; i++)
        std::cout << argv[i] << std::endl;
    return 0;
}
по задаче, нужно сделать что-то на подобии анализатора аргументов, чтобы брать значения после ключей
вот небольшой пример(без ключей):

main.cpp:
C++
1
2
3
4
5
6
7
8
#include <iostream> 
 
int main(int argc, char *argv[]) {
    if(argc<3)
        return 1;
    std::cout << atoi(argv[1]) + atoi(argv[2]) << std::endl;
    return 0;
}
start.bat:
Bash
1
2
3
@echo off
main.exe 55 100
pause
вывод:
Bash
1
155
GENDALF_ISTARI
 Аватар для GENDALF_ISTARI
-3 / 10 / 3
Регистрация: 20.08.2013
Сообщений: 631
14.04.2014, 00:24  [ТС]     Как батником задать значение переменной программе Visual C++ #5
Очень вам спасибо - как раз создал - то что хотел
но ожедаймый результат все таки не получил хорошо (копирывание, и удаления файла, ну и по свичу , напичкать навыками екзешник)
да я могу копирывать файл
вот таким батником call.bat

этот код батника для копирывания (с) , хотя скажу я вам , столкнулся с проблемой строк в С++
он switch не любит строки, ну спасибо за хоть за char,
да знаю про enum гуглил , но ни фига не удалось его применить , надеюсь
скинете код применения его в моей задаче

@ echo off
con_1.exe c f:\вечный_двигатель_есть_это_жизнь.jpg f:\вечный_двигатель_есть_это_жизнь.jpg
pause

этот код батника, как раз использован в удалении (d)
@ echo off
con_1.exe d f:\по_закону_сохранения_нас_и_не_было_бы.jpg
pause

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <conio.h>
#include <cstring>
#include <string>
#include <io.h>
#include <fstream>
#include <stdio.h>
#include <algorithm>
#include <Windows.h>
#include <cstdio>
 
using namespace std;
 
 
//string copy ();
string copy_file (string a, string b); // copy file
string copy_del (string fname); // copy del
 
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"UKR");
system("color 3f");
SetConsoleTitle(TEXT("Прототип cmd.exe"));
 
////////////////////////////////////
cout<<"                                    Команди"<<endl;
cout<<endl<<"Копіювання файлу bat: con_1.exe c шляхфайлу новийшляхфайлу"<<endl;
cout<<"Видалення файлу bat: con_1.exe d шляхфайлу "<<endl<<endl;
_getch();
////////////////////////////////////
    
if(argc<3)
return 1;
 
char* command;
command=(argv[1]);
 
string a="",b="";
//char *d;
 
 
 
 
ifstream infile(b, ios::app); // шлях до нового файлу
ifstream infile2(a, ios::binary); // шлях до нового файлу
//ifstream infile2(d, ios::binary); // шлях до нового файлу
 
//replace(a.begin(), a.end(), '\\', '\'); // замена в строке begin начало end конец 
//replace(a.begin(), a.end(), '//', '///'); // много функциональность замены
//replace(b.begin(), b.end(), '\\', '\');
//a.replace(0, 4, a);
 
switch (*command)
{
case 'c':
    a=(argv[2]);
    b=(argv[3]);
    
    //cout<<command<<" 0"<<endl;
    cout<<"Копіювання файлу : "<<a<<endl;
    cout<<"Копіювання в : "<<b<<endl<<endl;
    copy_file (a, b);
    if (infile!=NULL)
    {
    cout<<"Файл Скопійований в : "<<b<<endl;
    }
    getchar();
    break;
 
case 'd':
    //a=(argv[2]);
    a=(argv[2]);
    //cout<<command<<" 0"<<endl;
    cout<<"Видалення файлу: "<<a<<endl;
    copy_del (a);
    if (infile2==NULL)
    {
    cout<<"Файл видалений : "<<a<<endl;
    }
    else
    {
    cout<<"Файл не можем видалити : "<<a<<endl;
    }
    getchar();
    break;
 
default :
    cout<<"Не вірна команда"<<endl;
    getchar();
    break;
}
 return 0;  
}
 
////////////////copy_file////////////////
string copy_file (string a, string b)
{
char * buffer;
buffer = new char;
ifstream infile(a, ios::binary);
ofstream outfile(b, ios::binary);
    
infile.read(buffer, sizeof(char));
while (!infile.eof())
 
{
    outfile.write(buffer, sizeof(char));
    infile.read(buffer, sizeof(char));
}
 
 delete buffer;
 return buffer;
}
////////////////copy_file////////////////
 
 
 
 
 
////////////////copy_del////////////////
string copy_del (string fname)
{
    
    
    LPCWSTR a;
    a = (LPCWSTR)fname.c_str();
    DeleteFile(a);
    //LPCWSTR a;
    //a = (LPCWSTR)fname.c_str();
    //remove(fname);
    return fname;
}
////////////////copy_del////////////////
так вот при удаление, файл не удаляеться
да и пишет что нету его
толи проблема в этой строчки кода

C++
1
if(infile2==NULL)
Yandex
Объявления
14.04.2014, 00:24     Как батником задать значение переменной программе Visual C++
Ответ Создать тему
Опции темы

Текущее время: 07:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru