Sicherheitsabfragen umgehen?



  • Ich hab ein Konsolenprogramm geschrieben, was einige Dateien und Verzeichnisse anlegt, die jedoch nach Beenden des Programms nicht mehr benötigt werden, sprich ich möchte einige Verzeichnisse samt Inhalt löschen. system("del dir") hat mir weitergeholfen, auch wenn es nicht "sauber" ist 🙂 Das Problem ist nur, dass ich dann die Sicherheitsabfrage zum löschen bestätigen muss. Das ist nicht gut, da das Programm über Nacht ohne meinen Eingriff laufen soll.Gibt es einen Weg, diese Abfragen zu umgehen?(Wär ja eigentlich schlecht, man könnte allen möglichen Leuten total die Festplatten ruinieren...).Oder gibt es einen anderen Weg, Ordner samt Inhalt zu löschen? Für weiterführende Links etc. wäre ich genauso dankbar wie für eine direkte Antwort.



  • BeNNeR schrieb:

    Ich hab ein Konsolenprogramm geschrieben, was einige Dateien und Verzeichnisse anlegt, die jedoch nach Beenden des Programms nicht mehr benötigt werden, sprich ich möchte einige Verzeichnisse samt Inhalt löschen. system("del dir") hat mir weitergeholfen, auch wenn es nicht "sauber" ist 🙂 Das Problem ist nur, dass ich dann die Sicherheitsabfrage zum löschen bestätigen muss. Das ist nicht gut, da das Programm über Nacht ohne meinen Eingriff laufen soll.Gibt es einen Weg, diese Abfragen zu umgehen?(Wär ja eigentlich schlecht, man könnte allen möglichen Leuten total die Festplatten ruinieren...).Oder gibt es einen anderen Weg, Ordner samt Inhalt zu löschen? Für weiterführende Links etc. wäre ich genauso dankbar wie für eine direkte Antwort.

    del dir fragt also?
    je nach dos isses anders.
    a) echo y | del dir

    oder auf nem "deutschen dos"
    b) echo j | del dir

    mach ein dos hat nen frag-mich-nicht-parameter
    c) del -Q dir

    oder
    d) del -Y dir
    wenn das alles nicht paßt, vielleicht hat dein dos den befehl

    e) deltree, der so nen parameter hat? oder du schiebst mit

    f) move (falls vorhanden) den kram in ein verzeichnis, das in der autoexec.bat geputzt wird.

    g) oder host dir die unx-utils und benutzt rm.

    h) oder baust dir in Coder C++ eine rm-r.exe, so eine hatte ich zu dos-zeiten immer.

    oder du löscht per dos-schleife
    i) for %f in (dir\.) do del %f

    oder du merkst dir, welche dateien du angelegt hast und löscht sie dann einbfach mit
    j) unlink()

    k) oder DeleteFile()

    l) oder system("del ...

    oder du erzeugst die files mit
    m) CreateFile und dem netten paramater, der sagt, daß die files automatisch gelöscht werden sollen, wenn du den handle verlierst (gut bei unvorhergesehenen programmabbrüchen und wie ich ms kenne auch gut beim vermeiden von plattenschreibungen).

    n) oder legt die dateien gleich im temp-verzeichnis an, das wird ja hin und wieder mal geputzt

    o) oder du legst die dateien gleich auf einer ramdisk an

    leider keine gute idee dabei, aber vielleicht hilft es dir, beim weiterzusuchen.



  • danke erstmal. a)-f) funktionieren schonmal nicht, aber du hast ja noch einige andere möglichkeiten aufgezählt, an denen ich mich mal versuchen werde ( einige sind mir allerdings zu hoch...)



  • volkard schrieb:

    c) del -Q dir

    Müsste das nicht "del /Q dir" heißen?



  • CStoll schrieb:

    volkard schrieb:

    c) del -Q dir

    Müsste das nicht "del /Q dir" heißen?

    Sowas hab ich auch gelesen ( ich seh nur nicht durch mit den ganzen verschiedenen Versionen).Ich habe beide Varianten probiert und keine von beiden funktioniert.Aber ich habe mich entschlossen dass es ausreicht, nur die Dateien und nicht noch das Verzeichnis zu löschen, insofern ist mein Problem schon "gelöst". Danke nochmal.



  • CStoll schrieb:

    volkard schrieb:

    c) del -Q dir

    Müsste das nicht "del /Q dir" heißen?

    ja, müßte es.



  • Wieso nicht remove("file.txt");
    mit remove(const char*) kannst du Verzeichnisse und Dateien löschen.
    ...ist in stdio.h definiert
    ==>also:

    #include <stdio.h>
    
    int main(int argc , char* argv[])
    {
        FILE* pFile = fopen("datei.txt" , "w+");
        /* bla bla bla ... Dateioperationen ... bla bla bla */
        fclose(pFile);
        remove("datei.txt");
    }
    

    😃



  • BeNNeR schrieb:

    Aber ich habe mich entschlossen dass es ausreicht, nur die Dateien und nicht noch das Verzeichnis zu löschen, insofern ist mein Problem schon "gelöst". Danke nochmal.

    ach, ich dachte, du meinst die sicherheitsabfrage "möchten sie die dateien wirklich löschen?". meinstest du etwa die "kann das nicht löschen, weil nocwas drin ist."?
    meine vielen antworten sollten eigentliuch andeuten, daß du nicht verraten hast, ob dos oder windows und wenn windows, welches windows denn das ziel sein soll.
    del /S verzeichnis
    würde bei winxp ein verzeichnis und die ganzen dateien drin löschen.



  • @Volkard
    Jetzt verlier ich langsam den Überblick 😃 Also ich meinte schon die "möchten Sie wirklich löschen", aber irgendwie gibts es ja verschiedene Befehle, ich komm dann beim googlen immer arg durcheinander :D. Um diese Frage noch zu klären, das ganze soll in einer Konsole unter Win XP laufen.
    Ich werd es nochmal mit del/S Verzeichnis versuchen.
    ( Hab es jetzt versucht, und hier eben wieder das Problem: die Sicherheitsabfrage.Also unter Linux hat doch einfach ein "-y" drangehangen oder sowas, wenn ich mich nicht alles täuscht...gibts sowas nicht auch für die Konsole?
    @alex89ru: "remove" brachte mir eben ( wenn ich mich jetzt recht entsinne ) solch eine Sicherheitsabfrage ein, die ich umgehen möchte.



  • BeNNeR schrieb:

    unter Win XP laufen.

    rd /Q /S verzeichnis



  • Jetzt klappt es definitv, vielen Dank nochmal 😃


Anmelden zum Antworten