Daten an DOS-Box übergeben



  • Hallo zusammen , ich habe ein kleines Problem:

    Ich möchte ein kleines Programm schreiben , welches einen eingegebene Namen hinter einen Befehl parst , der in der Eingabeaufforderung zu finden ist.
    Also es soll ein Fenster aufgehene , der User trägt seinen Namen ein und das Programm parst diesen Namen hinter remaddr.
    Dann müsste dieser Befehl an das Betriebsystem in die Dos Box übergeben werden.
    Dann sollte schlussendlich z.B. in der DOS-Box stehen :
    c:\winnt\win32\remaddr name--> nur ein Beispielpfad!!

    Danke für eure Hilfe
    Grüsse



  • Geht alles:

    #include <iostream>
    using namespace std;
    
    // argc enthält die Anzahl der Parameter , argv enthält sie. Wobei argv[0] den Pfad des Programmes enthält.
    int main ( int argc , char * argv [] )
    {
        if ( argc == 1 ) // Wurden Parameter übergeben - wenn nicht ist "argc == 1" da ja der Pfad immer mit übergeben wird.
        {
            return ( 1 );
        }
    
        cout << argv[1]; // argv[1] enthält den ersten Parameter - den willst du ja bearbeiten.
    
        return ( 0 );
    }
    

    Hoffe, dass du das verstanden hast - sonst einfach rückfragen :).

    MfG SideWinder

    [ Dieser Beitrag wurde am 17.06.2002 um 15:45 Uhr von SideWinder editiert. ]



  • hmmm, also würde das bedeuten , das ich in die [] den Pfad tippe ??

    ... ich habe das mal so geschrieben , das es einfach als konsolenanwendung ausgegeben wird , dann klappt es , nur muss ich das halt noch in die dos box von windows integrieren können .. meine code sieht so aus ..

    #include<iostream.h>
    #include<conio.h>
    void main()
    {
        char name[20];
        cout<<"Dieses Programm parst Ihren Namen hinter den REMADDR-Befehl. "<<endl;
        cout<<"Bitte geben Sie ihren Namen ein! "<<endl;
        cin >> name;
        cout<<"remaddr "<<name<<endl;
        getch();
    }
    

    bin noch anfänger 😉



  • Ich bau dir das mal ein:

    // Neue Headerdateien benützen:
    #include <iostream>
    using namespace std;
    
    // wait() aus der Konsolen-FAQ (siehe Anmerkung unten):
    void wait ()
    {
        std::cin.clear ();
        std::cin.ignore ( std::cin.rdbuf () -> in_avail () );
        std::cin.get ();
    }
    
    // Rückgabewert von main ist ein Integer!
    int main ( int argc , char * argv [] )
    {
        if ( argc == 1 )
        {
            cout << "Sie haben keinen Namen eingegeben." << endl;
            wait ();
            return ( 0 );
        }
    
        cout << "Dieses Programm parst den Namen, den sie als Programmparameter übergeben haben." << endl;
        cout << "Name: " << argv [1];
        wait ();
    
        return ( 0 );
    }
    

    Die Funktion wait() stammt aus der Konsolen-FAQ "Automatisches Schließen verhindern" - ist besser als einfach getch() hinzusetzen.

    MfG SideWinder



  • cool , also es geht schon mal ohne fehler zu compilieren , nur ... ich muss ja ein neues projekt dafür erstellen ..wie immer: konsolenanwendung und dann c++ quellcode , oder wie ?

    weil wenn ich das so starte wie immer , dann steht da direkt 'Sie haben keinen Namen angegeben'.

    trotzdem schon mal vielen dank .



  • Neues Projekt + Quellcodedatei.

    Du musst es dann aus der DOS-Box aufrufen, da steht dann sowas:

    C:\>Programme\Remaddr\remaddr.exe -SideWinder

    MfG SideWinder



  • hmmm, also nochmal , glaube ich abe mich auch undeutlich ausgedrückt . also , ich möchte über die dos box ein programm starten , und auch den namen übergeben .
    also z.b das (auszuführende)programm hieße c:\>prog.exe und mann müsste es starten in der form c:\>prog name.. dann brauche ich ein programm , welches diese 2 schritte auf einen minimiert.

    --oder gibt es auch ne andere möglichkeit ??

    grüsse !



  • ...oder warte mal , ist es denn nicht so , das eigentlich einfach der prompt mit pfad leerzeichen name ausgegeben werden muss , aber so , das dieser nun stehende befehl per enter auszuführen ist ..

    fragen über fragen 😉



  • Komm jetzt nicht mehr mit...

    Ich dachte an folgendes:

    Dein Programm kann man auf verschiedene Wege aufrufen:

    C:\>remaddr.exe // Ausgabe: Sie haben keinen Namen eingegeben.
    C:\>remaddr.exe - SideWinder // Ausgabe: Alles was oben nicht ausgegeben wird 😉

    MfG SideWinder



  • Original erstellt von <skuuta>:
    also z.b das (auszuführende)programm hieße c:\>prog.exe und mann müsste es starten in der form c:\>prog name..

    Das geht doch mit Sidewinders Programm. Wenn du das Programm compilierst und dann eine exe erhältst, die prog heisst, dann startest du es mit "prog name"



  • ja schon , aber dann müsste ich schreiben . c:\remaddr prog name ..

    währe das dann so richtig ??

    man muss ich euch hemdsärmlig erscheinen ...;-0



  • Kurzanleitung:

    1.) Öffnen der DOS-Box. (cmd.exe im Windowsverzeichnis, bzw. bei älteren Versionen ist es noch die command.com in der Hauptpartition).
    2.) Zum gewünschten Zielordner prompten, mit "Festplatte:" und mit "CD Ordnername".
    3.) Dort angekommen mit remaddr.exe -SideWinder dein Programm öffnen.

    MfG SideWinder



  • kannst auch ne Verknüpfung auf dem Desktop machen :ugly: . Wie willst du das denn sonst machen? exe ist exe und wenn die nicht im startmenue oder aufm desktop verknüpft ist musst du IMMER den vollen Pfad eingeben



  • Original erstellt von dreaddy:
    kannst auch ne Verknüpfung auf dem Desktop machen :ugly: . Wie willst du das denn sonst machen? exe ist exe und wenn die nicht im startmenue oder aufm desktop verknüpft ist musst du IMMER den vollen Pfad eingeben

    Ich könnte mir das Programm auch im Explorer raussuchen ;)...

    MfG SideWinder


Anmelden zum Antworten