1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Problem mit JKDefrag in Skript

Discussion in 'Software allgemein' started by Mad_Hatter, Jan 8, 2009.

Thread Status:
Not open for further replies.
  1. Mad_Hatter

    Mad_Hatter Byte

    Hallo,

    ich habe mir dieses nette kleine Tool in ein automatisches Aufräum-Backup-Skript eingebaut, das automatisch
    - CCleaner startet
    - JKDefrag startet
    - Alles unter "Eigene Dateien" sichert
    - runterfährt (optional)
    Mein "Problem" dabei ist, daß jkdefrag so schnell zu sein scheint, daß es gar nicht sichtbar ist und soweit ich sehe gleich nach dem Aufruf des CCleaners das Backup in der Shell vorbeisaust und danach das von mir eingeschriebene "Ich bin fertig" und die Eingabeaufforderung "Drücken Sie die Any-Taste" kommt.
    Kann mir da jemand was dazu sagen? Ist das normales Verhalten von jkdefrag oder wird es routinemäßig nicht ausgeführt, wenn keine Fragmentierung vorliegt bzw. wenn der letzte Lauf nicht eine best. Zeit her ist?
    Vielen Dank!
    Gruß,

    Mad_Hatter
     
    Last edited: Jan 8, 2009
  2. Crow1985

    Crow1985 Ganzes Gigabyte

    Also wenn ich jkdefrag starte läuft das schon ne Stunde.
    Btw. sollte es erst gestartet werden, wenn der ccleaner seine Arbeit getan hat.
     
  3. Mad_Hatter

    Mad_Hatter Byte

    Hi crow1985,

    wenn ich die *.exe manuell starte, läuft es auch ´ne Weile. Ich bin ziemlich sicher, daß es im Skript gar nicht ausgeführt wird. Es kommt ja normal ein weiteres Shell-Fenster, wo man eine Schmalspur-Grafik zum Defrag-Status sieht. Die kommt im Skript auch nicht. Ich hab jetzt mal vor jeden Befehl jew. noch ein >echo Jetzt kommt...< gesetzt, damit ich einigermaßen seh, was grad abgeht und zwischen zwei Sachen jew. ein >sleep 10<, um sicherzugehen, daß die Befehle schön nacheinander angestoßen werden.
    Die Ausgaben der >echo...<-Befehle kommen auch, aber jkdefrag wird augenscheinlich nicht gestartet.
    Hast Du dazu noch ´ne Idee? Ist meine Syntax irgendwo falsch?
    Die Zeile, die jkdefrag aufrufen sollte, ist diese (mit etwas Kontext):

    C:\Programme\CCleaner\ccleaner.exe /auto
    sleep 20
    :rem Jetzt Festplatte defragmentieren
    echo Jetzt kommt jkdefrag
    sleep 5
    start "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien\Eigene_Tools\JkDefrag-3.36\jkdefrag.exe"

    Vielen Dank!
    Gruß,

    Mad_Hatter
     
  4. kazhar

    kazhar Viertel Gigabyte

    füge mal zwischen start und dem programmpfad "JKDefrag" ein;

    also
    start "JKDefrag" "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien\Eigene_Tools\JkDefrag-3.36\jkdefrag.exe"
     
  5. Mad_Hatter

    Mad_Hatter Byte

    Hi kazhar,

    danke! Damit funktioniert´s.
    Allerdings scheint das >sleep 20< nicht auszureichen, um sicherzustellen, daß die Befehle nacheinander ausgeführt werden. Es kommt nämlich ein von mir eingefügtes >echo Ich habe fertig<, kurz nachdem jkdefrag überhaupt erst angefangen hat.
    Ich hatte das von einer Liste mit XP-Befehlen. Gibt´s da noch was verlässlicheres, um dieses sicherzustellen?
    Vielen Dank!
    Gruß,

    Mad_Hatter
     
  6. kazhar

    kazhar Viertel Gigabyte

    mach mal start /?

    der parameter /wait sorgt dafür dass start wartet bis sich das aufgerufene programm beendet hat
     
  7. Mad_Hatter

    Mad_Hatter Byte

    Hallo kazhar,

    müsste das auch mit anderen Befehlen als >start< gehen, also z.B. >echo /wait jkdefrag ist fertig<?
    Das hab ich eben ausprobiert, das funktioniert aber nicht so.
    Blöderweise sind alle Befehle, die in meinem Skript nach dem Aufruf von jkdefrag kommen, ohne das >start< am Anfang. Da steht dann einfach >robocopy ["Quellpfad"] ["Zielpfad"] [Optionen]<
    Ich hab´s aber trotzdem ausprobiert und es scheint nicht zu gehen...
    Soll ich Dir vl. mal mein Skript per PM oder email schicken?
    Danke vielmals für die Mühe!
    Gruß,

    Mad_Hatter
     
  8. kazhar

    kazhar Viertel Gigabyte

    echo /wait ist lötzinn.
    du musst den programm aufruf vom ccleaner ebenfalls per start machen. also

    start "CCleaner" /wait "C:\<...bliblablubb...>\ccleaner.exe" /auto
    echo Jetzt kommt jkdefrag
    start "JKDefrag" /wait "C:\<...bliblablubb...>\jkdefrag.exe"
    ...
     
  9. Mad_Hatter

    Mad_Hatter Byte

    OK,

    aber - ich hab das Tool robocopy in dem Skript eingebaut. Das ist ja ein ziemlich kleines Tool, das normal mit dem Befehl >robocopy [Quellpfad] [Zielpfad]< gestartet wird. Wie soll ich das umschreiben? Ich find die *.exe dazu schon gar nicht...
    Gruß,

    Mad_Hatter
     
  10. kazhar

    kazhar Viertel Gigabyte

    was willst du damit sagen? :confused:

    robocopy wird doch sinnvollerweise ganz am schluss aufgerufen. darauf musst du dann nicht mehr warten...
     
  11. Mad_Hatter

    Mad_Hatter Byte

    Nein, umgekehrt, robocopy soll auf jkdefrag warten ;-)

    Außerdem gibt´s noch was anderes: Das Skript hat mehrere Szenarios. Ich hab gestern das Szenario "kein Backup, nur Aufräumen" probiert. jkdefrag ist gelaufen. Eigtl. sollte der PC danach automatisch runterfahren, ich hab da den Befehl >shutdown /s /f<. Stattdessen hat jkdefrag, als es fertig war, in eine Shell (die gleiche oder eine neue, weiß ich nicht genau) "Finished" hingeschrieben und die Nacht lang auf einen Tastendruck von mir gewartet und erst heut morgen ist der PC dann runtergefahren, nachdem ich das weggeklickt hab.
    Kann ich das irgendwie abstellen?
    Aber first things first ;-)
    Vielen Dank!
    Gruß,

    Mad_Hatter
     
  12. kazhar

    kazhar Viertel Gigabyte

    bin ich jetzt doof ?
    das ist doch genau das was ich sagte. erst jdefrag (mit start /wait) laufen lassen und dann robocopy (von mir aus ohne alles).

    start /wait <programm> startet das programm und blockiert gleichtzeitig das script so lange bis das programm "habe fertig" sagt.

    die komplette .bat zu posten ist wohl kein thema für dich :bse:
     
    Last edited: Jan 22, 2009
  13. Mad_Hatter

    Mad_Hatter Byte

    Ah, ok. Da hatte ich Dich falsch verstanden. Ich dachte, /wait bewirkt, daß ein Aufruf wartet, bis das vorherige Programm beendet ist.

    Hier ist mal die komplette *.bat:

    @echo off
    :start

    set /P prog=Cleanup vollständig? (cb/c/b)
    set /P prog2=Danach ausschalten? (j/n)
    if "%prog%"=="cb" goto komplett
    if "%prog%"=="c" goto nur_cleanup
    if "%prog%"=="b" goto nur_bk




    :komplett
    cls
    :rem Jetzt Platte ausmisten !
    echo Jetzt kommt CCleaner
    sleep 5
    start "CCleaner" "C:\Programme\CCleaner\ccleaner.exe" /auto
    sleep 20
    :rem Jetzt Festplatte defragmentieren
    echo Jetzt kommt jkdefrag
    sleep 5
    start "JKDEFRAG" /wait "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien\Eigene_Tools\JkDefrag-3.36\jkdefrag.exe"
    :rem Jetzt komplette Datensicherung machen
    echo Jetzt kommt robocopy_Videos
    sleep 5
    start "robocopy" /wait "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Desktop\Videos" "I:\movies" /E
    sleep 20
    echo Jetzt werden alle Inhalte des Ordners auf der internen Platte gelöscht
    DEL /S "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Desktop\Videos"
    sleep 10
    echo Jetzt kommt robocopy_Full_Backup
    sleep 5
    robocopy "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien" "I:\Full_Backup" /MIR
    :rem Falls hier mehrere Verzeichnisse kommen, sind mehrere robocopy-Befehle notwendig <=> Die arbeiten streng der
    :rem Reihe nach, ein >pause< erübrigt sich also.
    if "%prog2%"=="n" goto schluss
    shutdown /s /f

    :nur_cleanup
    cls
    :rem Jetzt Platte ausmisten !
    echo Jetzt kommt CCleaner
    sleep 5
    C:\Programme\CCleaner\ccleaner.exe /auto
    sleep 20
    :rem Jetzt Festplatte defragmentieren
    echo Jetzt kommt jkdefrag
    sleep 5
    start "JKDEFRAG" /wait "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien\Eigene_Tools\JkDefrag-3.36\jkdefrag.exe"
    echo jkdefrag ist jetzt fertig
    if "%prog2%"=="n" goto schluss
    shutdown /s /f


    :nur_bk
    cls
    :rem Jetzt komplette Datensicherung machen
    echo Jetzt kommt robocopy_Videos
    sleep 5
    robocopy "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Desktop\Videos" "I:\movies" /E
    sleep 20
    echo Jetzt werden alle Inhalte des Ordners auf der internen Platte gelöscht
    DEL /S "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Desktop\Videos"
    sleep 20
    echo Jetzt kommt robocopy_Full_Backup
    sleep 20
    robocopy "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien" "I:\Full_Backup" /MIR
    :rem Falls hier mehrere Verzeichnisse kommen, sind mehrere robocopy-Befehle notwendig <=> Die arbeiten streng der
    :rem Reihe nach, ein >pause< erübrigt sich also.
    if "%prog2%"=="n" goto schluss
    shutdown /s /f

    :schluss
    echo Ich bin jetzt fertig
    goto ende

    :ende
    pause
     
  14. Mad_Hatter

    Mad_Hatter Byte

    Hab ich Dich jetzt verschreckt?

    Mein Hauptproblem ist jetzt Folgendes, nachdem das mit /wait funktioniert:
    Im Haupt-Szenario - Cleanup und dann Backup - erzeugt jkdefrag, wenn´s fertig ist, diesen coolen Ausspruch "Finished", den ich wegklicken muß, eh das Skript weiterläuft.
    jkdefrag ist doch OSS - da müsste es doch möglich sein, ans Ende einen Befehl zu setzen, der die Shell einfach schließt, statt dieses tolle "Finished" da hinzuschreiben?
    Gruß,

    Mad_Hatter
     
  15. kazhar

    kazhar Viertel Gigabyte

    so zu sagen...
    ich hab einfach keine lust den ganzen unlesbaren bandwurm zu debuggen.

    für jkdefrag gibt es eine konsolenversion die "einfach so" läuft.

    findest du es nicht gefährlich einfach mal anzunehmen dass das backup fehlerfrei erstellt werden konnte und preventiv alles zu löschen?

    @echo off
    set /P prog=Cleanup vollständig? (cb/c/b)
    set /P prog2=Danach ausschalten? (j/n)
    if "%prog%"=="cb" goto komplett
    if "%prog%"=="c" goto nur_cleanup
    if "%prog%"=="b" goto nur_bk

    :komplett
    cls
    echo Jetzt kommt CCleaner
    start "CCleaner" /WAIT "C:\Programme\CCleaner\ccleaner.exe" /auto

    echo Jetzt kommt jkdefrag
    start "JKDEFRAG" /WAIT "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien\Eigene_Tools\JkDefrag-3.36\jkdefragCmd.exe" c:\

    echo Jetzt kommt robocopy_Videos
    start "robocopy" /WAIT robocopy "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Desktop\Videos" "I:\movies" /E

    echo Jetzt werden alle Inhalte des Ordners auf der internen Platte gelöscht
    DEL /S "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Desktop\Videos"

    echo Jetzt kommt robocopy_Full_Backup
    start "RoboCopy" /WAIT robocopy "C:\Dokumente und Einstellungen\fhofmann.DABGMBH\Eigene Dateien" "I:\Full_Backup" /MIR

    if "%prog2%"=="n" goto schluss
    shutdown /s /f
    goto schluss

    etc...
     
    Last edited: Jan 28, 2009
  16. Mad_Hatter

    Mad_Hatter Byte

    Hi kazhar,

    naja, ich hatte Dich ja auch nicht gebeten, es zu debuggen, das mach ich schon selbst. Ich hatte ja nur eine Einzelfrage gestellt, oder? Du wolltest die komplette *.bat sehen... Egal.
    Vielen Dank auf jeden Fall!
    Gruß,

    Mad_Hatter
     
Thread Status:
Not open for further replies.

Share This Page