Variablen an einen System("... anhängen ?



  • wie kann ich Variablen ( char oder int ) an einen system befehl hängen also so :

    system("mkdir " /* {und hier soll dann die Varieble stehen die der Benutzer eingegeben hat in dem fall der Ordnername}  */
    

    aber wie ? Ich habe viel versucht habe es aber immernoch nicht geschafft !!
    Ich benutze den Bloodshev Dev-C++ Compiler !



  • 1. Um ein Directory zu erstellen nimmt man eine Funktion des Betriebssystems um ein Directory zu erstellen und führt kein anderes Programm via system() aus, dass diese Funktion implementiert hat...

    2. Trotzdem wirst du irgednwann einmal Strings aneinanderreihen wollen:

    #include<string>
    
    ...
    
    string directory_name;
    getline(cin, directory_name);
    
    string command = "mkdir " + directory_name;
    system(command.c_str());
    

    Aber wehe du machst das mit system() das ist böse.

    MfG SideWinder



  • nächstes Problem ... Ich will damit ja daten expandieren ( rauskopieren ) nun wohin sollen diese Daten ?

    Ich brauche einen Code der
    1. nach einem verzeichnis fragt ( scho geschehen )
    2. Daten in dieses verzeichnis kopiert
    3. Sie dann dort evtl. Umbenennt !

    Wer kann mir den 2. und den 3. Punkt erklären ? Einfache Codes 🙂



  • mein aktueller Code der die daten in ein festgelegtes verzeichnis kopiert sieht so aus

    int main ()
    {
        // Benutze auch die IC
        textcolor(FG_RED)   ;
        bgcolor(BG_BLUE)    ;
    
        system("@echo off" ) ;
    
        // Verzeichniss erstellen 
        system("MKDIR E:\\system\\" ) ;
    
        system("echo Die Daten werden nun expandiert -...- Bitte warten ! " ) ;
    
        // Die daten aus dem aktuellen verzeichniss rauskopieren 
        system("COPY lol.tx_ E:\\system\\" ) ;
        system("COPY lol.bm_ E:\\system\\" ) ;
        system("COPY lol.do_ E:\\system\\" ) ;
        system("COPY lol.zi_ E:\\system\\" ) ;
    
        // Die Daten dann dort umbenennen
        system("REN E:\\system\\lol.zi_ lol.zip" ) ;
        system("REN E:\\system\\lol.bm_ lol.bmp" ) ;
        system("REN E:\\system\\lol.do_ lol.doc" ) ;
        system("REN E:\\system\\lol.tx_ lol.txt" ) ;
    
        // Fertig
        system("echo Done !!!" ) ;
        system("pause") ;
    }
    

    Ich will das man ein Verzeichniss eingeben kann wo dann die daten auch reinkopiert werden oder man sie dort umbenennen kann !



  • wo isn da der sinn?
    du machst en prog das fast nur aus commandline befehlen besteht....
    Nimm normale funktionen oder mach ne batch oO



  • Das is nur ein kleiner Teil davon !!!!



  • Nocheinmal. Wie tobZel schon sagt, es ist sinnlos eine Reihe von system-Befehlen aneinanderzuketten. Du rufst nur andere Programme auf, die diese Funktionalität anbieten.

    Wenn du nur andere Programme aufrufen willst empfiehlt sich eine Batch-Datei (.bat)

    Wenn du ein Wirkliches Programm schreiben willst dann:

    - Kein system()
    - Statt mkdir nimmst du CreateDirectory() aus der windows.h
    - Statt copy nimmst du CopyFile() aus der windows.h
    - Statt ren nimmst du MoveFile() aus der windows.h
    - Statt komischen echos verwendest du cout aus der <iostream>

    MfG SideWinder



  • abgesehen davon habe ich das hier hingemurkst !

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    int main(){
    
          string befehl, variable;	
          befehl = "MKDIR ";	    
          getline(cin, variable);
          befehl.append(variable);
          system(befehl.c_str());
    
          string var , var2 , var3    ;
          var = "COPY "    ; 
          var2 = variable ;
          var3 = "lol.tx_ " ;	
          var.append(var3 + var2);	
          system(var.c_str());
    
        system("pause");
        return 0;
    }
    

    is zwar für mehrere Daten ein haufen tpparbeit aber immerhin !!!


Log in to reply