shell registrieren und eigene batch erstellen...

partitionist

Erfahrenes Mitglied
Hallo Leute ich habe eine Shell erstellt bei der man Befehle eingeben kann, diese sieht wie folgt aus:

Code:
int main(int argc, char* argv[])
{
string str;
do
            {
                                    
                //Befehl mit Parameter einlesen
                getline(cin, str);
                    
                istringstream cmdline (str);
                string input;
                vector<string> params;

if(cmdline >> input) 
                {   
                 //...

Jetzt möchte gerne eine eigene batch erstellen wie *.bat oder *.cmd.
Meine shell mit der Dateiendung z.B.: *.abc soll in der Registry registriert werden, damit Windos die Befehle im Skript an meine Shell zuweisen kann.
Ein Beispiel Skript test.abc in der steht:

Code:
exec defrag c:
shutdown

das sind zwei Zeilen Code die an die Shell übergeben werden müssen. Ich dachte mir wenn ich denn Inhalt an die Shell übergebe und dann mit args[] verarbeite so als wären es normale Eingaben.

Ich brauche Hilfe bei der Registrierung von Dateitypen hier z.B. *.abc und des zugehörigen Programms und wie bekomme ich denn Inhalt ausgelesen damit ich jede zeile an meine Shell übergeben kann?
Wie wird das bei *.cmd gemacht, die Funtion ist ja ähnlich oder?
 
Das mit der Registrierung der Dateierweiterung hab ich geschafft, doch wie bekomme ich die Inhalte aus der Datei test.abc an meine Shell übergeben

Brauche unbedingt Hilfe
 
Wenn du die Datei mit deinem Programm öffnen lässt, bekommst du den Pfad der DAtei als Parameter übergeben.
Jetzt musst du nurnoch die Datei öffnen.
Das hier hab ich schnell per google in einem anderen Forum gefunden:
Code:
FILE* datei1; 
datei=fopen("datei.txt","r+"); 
/* alternativ zu r+ 
r - nur zum lesen 
w - nur zum schreiben 
r+, w+ - zum schreiben UND lesen (ueberschreiben der datei) 
a - schreiben, aber anhaengen an die datei 
a+ - schreiben und lesen, an die datei wird angehaengt*/ 

if(datei==NULL) 
//fehler beim oeffnen 
return -1; 

fseek(datei,0,SEEK_END); 
/*fseek veraendert die position in der datei... 
SEEK_END heisst ans ende der datei, SEEK_SET ist der anfang und SEEK_CUR ist die aktuelle position... 
0 ist der wert um den die position geaendert wird (in unserem fall 0, da wir ja das datei einde wollen) 
*/ 

fprintf(datei,"Hallo Datei"); 
//wie printf() zu handhaben! 

//alternativ zu fprintf gibt es noch fputs() 

fscanf(datei,"%s",&string); 
//wie scanf() 

//alternativ dazu gibt es gets 

fclose(datei); 
//wichtig: FILE* muss wieder geschlossen werden
 
Zurück