defrag ende



  • Hallo
    wie kann man feststellen ob das Tool defrag (Defragmentierung) fertig ist?
    Der Hintergrund ist das ich ein kleines Konsolentool für mich schreiben will das (unter anderem) die Defragmentierung ausführen soll und wenn es fertig, und erst dann, soll der Rechner runter fahren. Das Problem ist ich weiß ja nicht wie mein C++ Programm das feststellen soll wann das Defragen zu Ende ist.
    Wie man das Programm defrag startet in meinem Programm weiss ich zwar auch noch nicht doch das bekomme ich noch heraus.
    Ich bin Anfänger und versuchen gerade mal für mich ein paar Probleme Programmiertechnisch zu lösen.

    Danke für jede Antwort

    PS: Ich denke mal nicht das ich Kenntnisse über die WinAPI brauche, wenn doch dann muss ich mir was anderes einfallen lassen. Will erst einmal C++ lernen.



  • Hallo,

    naja nur so ne iede.
    solange defrak leuft nutzt es prozesser auslastung also suchst du in deinem programm nach den prozess und dan aller 10 min nachschauen ob der prozess noch leuft wen nicht dan sollte er ja zuende sein oder.

    MFG TaccoGo



  • TaccoGo schrieb:

    Hallo,

    naja nur so ne iede.
    solange defrak leuft nutzt es prozesser auslastung also suchst du in deinem programm nach den prozess und dan aller 10 min nachschauen ob der prozess noch leuft wen nicht dan sollte er ja zuende sein oder.

    MFG TaccoGo

    Nette Idee, aber etwas umständlich findest du nicht auch?

    @defrager
    Zum Aufruf von Defrag musst du eine Funktion aufrufen, die Systembefehle ausführen kann. system() ist z. B. solch eines (allerdings sollte es nur benutzt werden, wenn nötig, wie in diesem Fall; also nicht zum Bildschirm löschen oder beliebige Taste drücken verwenden!). Und wenn die Programmierer von Defrag recht nett waren, dann geben sie sogar unterschiedliche Werte zurück. Damit kannst du dann sogar feststellen, ob Defrag erfolgreich ausgeführt wurde oder mit einem Fehler abgebrochen ist. Aber unabhängig davon, hat system() noch den Vorteil, dass es erst wieder in den Aufrufprozess (dein Programm) zurückkehrt (mit den nächsten Befehlen weiter macht), wenn das aufgerufene Programm (in dem Fall Defrag) beendet wird. D. h. wenn Defrag fertig ist, gehts erst in deinem Programm weiter.

    Es gibt von der WinAPI her noch andere Funktionen, die Prozesse aufrufen können, aber in deinem Fall ist system() (kein WinAPI) ganz passend, denke ich.



  • Danke für die Antworten.
    system() funktioniert einwandfrei.

    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    void defrager();
    int main()
    {
    cout << "Defragmentierung durchf\x81hren und Rechner anschliessend herunter fahren?\n"
         << endl << "j f\x81r JA, ansonsten Programm beenden\n" << "Eingabe : ";
    char eingabe;
    cin.get(eingabe);
    if(eingabe != 'j') {
        cout << "Programm wird beendet\n";     
        system("PAUSE");
            }
    else defrager();    
    }
    
    void defrager() {
    system("defrag c:");
    cout << "Laufwerk C ist defragmentiert worden\n";
    system("defrag d:");
    cout << "Laufwerk D ist defragmentiert worden\n" << "Rechner wird herunter gefahren";
    system("shutdown -s");    
    }
    

    Genau das brauch ich, meine 80 GB Platte braucht immer so lange bis sie defragmentiert ist, wenn ich das über Nacht mache muß der Rechner danach nicht anbleiben.

    Danke noch mal. Irgendwann werde ich das mal erweitern.

    Bye



  • offtopic: schau dir mal software von O&O an.



  • Seh ich nicht so.

    a. Brauche ich nicht den kompletten Umfang der Software von O & O.
    b. Zum Üben ist es für einen Anfänger (wie mich) nicht schlecht.
    c. Am besten man lernt Programmieren und man wartet aber nur das es dann doch jemand anders macht. Ob das Sinn macht!



  • es war nur ein vorschlag. was du daraus/mit machst ist deine sache. warum das rad ständig neu erfinden? wenn es dir um den lerneffekt geht, machs selbst. wenns um "professionelles" defragmentieren geht, warum nicht leuten vertrauen, die das professionell machen...naja, wie gesagt: deine entscheidung



  • Das ist richtig was du sagst.
    Dann hätte ich auch direkt eine Frage. Gibt es Unterschiede zwischen den Defragmentiertools? Habe mal gehört das es nicht sinnvoll ist ein aktives Dateisystem zu defragmentieren. Habe ein Tool namens NTFS4DOS mit CHKDSK + DEFRAG von dem man bootet und dann sein Dateisystem "bearbeiten" kann.
    Einen Unterschied habe ich aber nicht bemerkt.

    Greetz


Anmelden zum Antworten