Veröffentlicht 13. Dezember 200717 j Hallo, ich habe mehrere Skripts für die Computerwartung geschrieben und möchte diese automatisch beim Abmelden oder herunterfahren aufführen lassen. Ich habe dies in XP über die Gruppenrichtlinien eingestellt, und es funktioniert auch hervorragend. Nun möchte ich aber die Defragmentierung nicht bei jedem herunterfahren laufen lassen, sondern zum beispiel nur monatlich, also alle vier Wochen. Gibt es da einen Schalter, oder ist dies generell nicht möglich, und ich sollte die Batchdatei lieber von Hand starten?
13. Dezember 200717 j Mir wuerde als Ansatz einfallen ne Textdatei irgendwo hinzulegen die als Inhalt ne Zahlenfolge von 1..30 hat. Wenn dann die Zahl 30 dadrin steht wird das defrag.exe ausgefuehrt und die Zahl auf 1 zurueckgesetzt.
13. Dezember 200717 j Autor Kannst Du da ein Codebeispiel geben, wie ich das einbinde? echo off set Ordner="D:\programme\OO Defrag\" open <Datei> if <Datei><Wert><<30 <Wert>=<WERT>+1 close<Datei> exit else if <Wert>=0 close<Datei> %Ordner%oodcmd.exe /COMPNAME:C,D,E /OUTPUT:log.txt [/PHP] Da bräuchte ich dann noch mal die genauen Bezeichnungen, um die datei zu öffnen/schließen.
14. Dezember 200717 j @echo off set Ordner="D:\programme\OO Defrag\" set Zaehler="D:\programme\oo defrag\counter.txt" for /F "tokens=1" %%a in (%%Zaehler) do set x=%%a rem Wert inkrementieren set /a x = %x%+1 IF %x% == 30 goto DEFRAG rem Neuer Wert in Datei schreiben echo %x% > %Zaehler% goto EOF :DEFRAG rem Zaehler zuruecksetzen echo 1 > %Zaehler% rem Defragmentierung ausfuehren %Ordner%oodcmd.exe /COMPNAME:C,D,E /OUTPUT:log.txt rem eof :EOF So sollte das jetzt gehen denke ich.
14. Dezember 200717 j Autor Kann es sein, daß da noch ein Fehler in der Syntax ist? Die Datei counter.txt wird irgendwie bearbeitet. Datum/Uhrzeit zuletzt geändert ändern sich bei jedem Aufruf der Batchdatei, aber die 1 im File ändert sich nicht. Oder kann ich das inkrementieren nicht sehen? Was bewirken die Schalter: for /F "tokens=1" %%a in (%%Zaehler) do set x=%%a und: set /a x=%x% + 1 Muß da eventuell ein [%] an Stelle des[/] stehen?
14. Dezember 200717 j Autor Bei dieser Syntax schreibt er mir immer nur eine "1" in die Textdatei, und sonst nichts weiter. Gebe 29 vor ==> x+1 = 30 startet die Defragmentierung nicht. Und er setzt x wieder 1.
14. Dezember 200717 j Autor Korrekt lautet das Skript jetzt: @echo off set Ordner="D:\programme\OO Software\Defrag Professional\" set Zaehler="D:\programme\OO Software\Defrag Professional\counter.txt" for /f "tokens=1" %%a in (%Zaehler%) [B][I][COLOR="red"]do set /a x=%a%[/COLOR][/I][/B] echo %x% rem Wert inkrementieren set /a x=%x%+1 echo %x% IF %x% == 30 goto DEFRAG rem Neuer Wert in Datei schreiben echo %x% > %Zaehler% goto EOF :DEFRAG rem Zaehler zuruecksetzen echo 1>%Zaehler% rem Defragmentierung ausfuehren %Ordner%oodcmd /COMPNAME:C,D,E,G,H /OUTPUTFILE:"H:\LOG\Defrag.txt" rem eof :EOF Dann wird der Wert von [%%a] richtig an die Variable X übergeben.
18. Dezember 200717 j Warum fragst du nicht einfach das Datum ab? Das spart ne zusätzliche Datei und man (Administrator) weiß immer wann die letzte Defragmentierung gelaufen ist ohne vorher in den counter zu gucken! Es soll ja durchaus Unternehmen geben wo eine Defragmentierung aus irgendwelchen Gründen am 1. des Monats nicht günstig ist. Da jedoch Monate manchmal 28(29),30 oder 31 Tage haben verschiebt sich die Defragmentierung auch immer um 1-2Tage! Nur so als Idee ;o)
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.