remove() aus der Kommandozeile(*argv[])



  • Servus,

    hab Windows XP und schreib mit Notpad++ und will eine Datei aus der Kommandozeile löschen.
    Hab mir sehr viele Foren Themen angesehen und gegoogelt aber bisher klappt es leider noch nicht.
    Lese aus der Kommandozeile mit char *argv[].
    argv hab ich schon mit argv ++ weitergeschaltet. Es würde also auf die richtige Datei zeigen. Bin mir sicher da ich vorher damit auch schon etwas damit anstelle.

    [code]
    if( remove (*argv) == 0 )
    {
    cerr <<endl<<"deleted"<<endl;
    exit(-1);
    }
    else
    cerr <<endl<<"not deleted"<<endl;
    [\code]

    Leider kommt keine Fehlermeldung vom Compiler.
    Die Datei wird so nicht gelöscht.
    bekomme -1 als Rückgabewert zurück.
    *argv deshalb weil ich *argv[] in die Funktion übergebe

    Kann mir jemand weiterhelfen ??



  • del <dateiname>
    

    🤡



  • Danke für die Aufmerksamkeit Tachylon.
    Du meinst das ich den "del" Befehl in die Konsole eingeben soll zum löschen.
    Den "del" Befehl in C++ gibt es nicht. nicht in cppreference.com ( habs zumindest nicht gefunden)

    Meine Absicht ist schon das ganze in einer cpp Datei ausführen zu lassen.

    Grund: wenn ich meine Ausgabe Datei erstelle und es wäre keine .txt Datei sondern z.B. .tx dann erstellt er mir ja z.B. ausgabe.tx
    Um dies zu vermeiden will ich diese Datei sofort wieder löschen damit es kein Chaos wird.



  • sepplein schrieb:

    Meine Absicht ist schon das ganze in einer cpp Datei ausführen zu lassen.

    Grund: wenn ich meine Ausgabe Datei erstelle und es wäre keine .txt Datei sondern z.B. .tx dann erstellt er mir ja z.B. ausgabe.tx
    Um dies zu vermeiden will ich diese Datei sofort wieder löschen damit es kein Chaos wird.

    Erstell die Datei doch erst garnicht.



  • sepplein schrieb:

    Danke für die Aufmerksamkeit Tachylon.
    Du meinst das ich den "del" Befehl in die Konsole eingeben soll zum löschen.
    Den "del" Befehl in C++ gibt es nicht. nicht in cppreference.com ( habs zumindest nicht gefunden)

    Meine Absicht ist schon das ganze in einer cpp Datei ausführen zu lassen.

    Grund: wenn ich meine Ausgabe Datei erstelle und es wäre keine .txt Datei sondern z.B. .tx dann erstellt er mir ja z.B. ausgabe.tx
    Um dies zu vermeiden will ich diese Datei sofort wieder löschen damit es kein Chaos wird.

    Dann schau,dass du immer .txt hast.. 🙄

    Ansonsten schau dir mal OS spezifische API's an. (z.B WinAPI). Ansonsten gibt es auch noch Boost Filesystem, als unabhängige Variante.



  • Jetzt hab ichs!!!

    @hö? Hatte Logikfehler

    Der Programmabblauf sieht so aus.
    ( Schemamäßig zur besseren verständlichkeit )

    Funktion controlle der ganzen Eingaben über der Kommandozeile()
    {
    ......
    ofstream target_file ( *++argv ); //hier wird ofstream Deklariert
    Funktion kontrolle ob .txt Datei ( argv ); // Kontrolle ob txt Datei
    file_copy_in_Ausgabe ( target_file , source_file ) // von readfile in writefile
    }

    Die Ausgabe Datei wird ja schon von ofstream erstellt.
    Da ich danach erst in
    Funktion kontrolle ob .txt Datei
    überprüfe ob es eine txt datei handelt hat er ja schon die falsche Datei erstellt.

    so is es richtig

    Funktion controlle der ganzen Eingaben über der Kommandozeile()
    {
    ......
    Funktion kontrolle ob .txt Datei ( ++argv ); // Kontrolle ob txt Datei
    ofstream target_file ( *argv ); //hier wird ofstream Deklariert
    file_copy_in_Ausgabe ( target_file , source_file ) // von readfile in writefile
    }

    @drakon

    Normal versuch ich auch keine falsche Eingabe zu machen.
    Das Programm sollte aber so sicher wie möglich sein.

    Danke für die Info er library "Boost Filesystem". Ich denk des is ganz hilfreich auf den ersten Blick.

    Danke an alle!!!



  • Du könntest das aber eher so machen:

    Dateiname aus Kommanddozeile holen.
    Wenn Endung = txt dann
       Datei oeffnen
    andernfalls
       Fehler ausgeben (alternativ: txt erzwingen, indem es einfach angehangen wird)
    Ende Wenn
    

Anmelden zum Antworten