[..] Défragmentation

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

[..] Défragmentation

#1

Message par toniino38 »

Bonjour à tous,

Je souhaite créer un script me permettant de lancer une défragmentation toutes les semaines... pouvez-vous m'aider svp ?

Code : Tout sélectionner

$Ordinateur = @ComputerName
$LogPath = "\\serveur03\patchs\Report\Defrag\" & $Ordinateur & ".txt" 

RunAs ( "pseudoadmin", @ComputerName, "password", "mmc.exe dfrg.msc" , @SystemDir )
;Run ("mmc.exe dfrg.msc",@SystemDir)
WinWaitActive ("Défragmenteur de disque", "Défragmenter")
Send ("{TAB}")
Send ("{ENTER}")
WinWaitActive ("Défragmenteur de disque", "La défragmentation est terminée pour : (C:)")
Send ("{ENTER}")
WinWaitActive ("Rapport de défragmentation")
Send ("{ENTER}")
WinClose ("Défragmenteur de disque")


_FileWriteLog ( $LogPath, $Ordinateur & " a défragmenté son pc." )

#cs 
 SCRIPT FICHIER Log
#ce
Func _FileWriteLog($sLogPath, $sLogMsg)
    ;==============================================
    ; Local Constant/Variable Declaration Section
    ;==============================================
    Local $sDateNow
    Local $sTimeNow
    Local $sMsg
    Local $hOpenFile
    Local $hWriteFile

    $sDateNow = @YEAR & "-" & @MON & "-" & @MDAY
    $sTimeNow = @HOUR & ":" & @MIN & ":" & @SEC
    $sMsg = $sDateNow & " " & $sTimeNow & " : " & $sLogMsg

    $hOpenFile = FileOpen($sLogPath, 1)

    If $hOpenFile = -1 Then
        SetError(1)
        Return 0
    EndIf

    $hWriteFile = FileWriteLine($hOpenFile, $sMsg)

    If $hWriteFile = -1 Then
        SetError(2)
        Return 0
    EndIf

    FileClose($hOpenFile)
    Return 1
EndFunc   ;==>_FileWriteLog
 
Mon problème c'est que en Run tout marche... mais uniquement sur mon poste (je suis admin) mais dès que je veux le lancer sur un autre poste... il bloque.. normal. Donc je test avec un RunAs mais là je n'arrive plus à appeler l'application du defrag...
Ensuite si je pouvais lancer une defrag en silence... Et après voir pour rajouter une fréquence de lancement du script ( par exemple si lundi alors lancer la defrag si autre jour ne rien faire...)

Merci à tous =D
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Défragmentation

#2

Message par Tlem »

Pour la planification, je vous conseil d'utiliser l'outil de planificateur de taches fournit avec Windows. Vous pouvez gérer l'ajout de taches avec la commande DOS 'AT' qu'il vous sera simple à scripter avec AutoIt.
Il me semble que cela peut aussi être fait en WMI, mais je vous laisserais chercher. ;)

Quand au lancement de la défragmentation en mode silencieux, utilisez :

Code : Tout sélectionner

RunWait(@SystemDir & '\Defrag.exe ' & $Drive & ' -f', "", @SW_HIDE)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

Re: [..] Défragmentation

#3

Message par toniino38 »

Voici mon nouveau code :

Code : Tout sélectionner

$Ordinateur = @ComputerName
$LogPath = "\\serveur03\patchs\Report\Defrag\" & $Ordinateur & ".txt" 
$Drive = "C:\"

#RequireAdmin
RunWait(@SystemDir & '\Defrag.exe ' & $Drive & ' -f', "", @SW_HIDE)
_FileWriteLog ( $LogPath, $Ordinateur & " a défragmenté son pc." )

#cs 
 SCRIPT FICHIER Log
#ce
Func _FileWriteLog($sLogPath, $sLogMsg)
    ;==============================================
    ; Local Constant/Variable Declaration Section
    ;==============================================
    Local $sDateNow
    Local $sTimeNow
    Local $sMsg
    Local $hOpenFile
    Local $hWriteFile

    $sDateNow = @YEAR & "-" & @MON & "-" & @MDAY
    $sTimeNow = @HOUR & ":" & @MIN & ":" & @SEC
    $sMsg = $sDateNow & " " & $sTimeNow & " : " & $sLogMsg

    $hOpenFile = FileOpen($sLogPath, 1)

    If $hOpenFile = -1 Then
        SetError(1)
        Return 0
    EndIf

    $hWriteFile = FileWriteLine($hOpenFile, $sMsg)

    If $hWriteFile = -1 Then
        SetError(2)
        Return 0
    EndIf

    FileClose($hOpenFile)
    Return 1
EndFunc
 
Comment puis-je m'assurer que ce soit bien fonctionnel ?

Merci beaucoup :)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Défragmentation

#4

Message par Tlem »

En le lançant ... :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre