[..] Récupérer les tâches planifiées

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Dinath
Niveau 1
Niveau 1
Messages : 3
Enregistré le : sam. 28 déc. 2013 14:17
Status : Hors ligne

[..] Récupérer les tâches planifiées

#1

Message par Dinath »

Bonjour à tous,

Code : Tout sélectionner

schtasks /query /fo table
Voici ce que la commande suivante me donne :

Code : Tout sélectionner

[...]

Dossierÿ: \Microsoft\Windows\WS
Nom de la tƒche                          Prochaine ex‚cution    Statut         
======================================== ====================== ===============
Badge Update                             N/A                    Prˆt           
Sync Licenses                            N/A                    Prˆt           
WSRefreshBannedAppsListTask              29/12/2013 18:32:48    Prˆt           
WSTask                                   N/A                    Prˆt  
J'aimerais extraire le nom de la tâche si la prochaine exécution n'est pas N/A et que le statut est prêt ; le tout à mettre dans un tableau.

J'ai essayé mais mes connaissances en expressions régulières ne sont pas très... évoluées. Après avoir vérifié que le String "Prêt" existe bien et que le String "N/A" n'y est pas.

Ce qui me gêne, ce sont les espaces que je n'arrive pas résoudre avec "\h".

Merci pour vos réponses !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer les tâches planifiées

#2

Message par mikell »

Tu posterais pas ton code ? histoire de gagner du temps
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Dinath
Niveau 1
Niveau 1
Messages : 3
Enregistré le : sam. 28 déc. 2013 14:17
Status : Hors ligne

Re: [..] Récupérer les tâches planifiées

#3

Message par Dinath »

Et voilà, il me faut juste un StringRegExpReplace() qui tienne la route.

Code : Tout sélectionner

#include <array.au3>

RunWait(@ComSpec & " /c " & 'schtasks /query /fo table > %temp%\tasks.txt', "", @SW_HIDE)

Local $hFile, $string, $replaced, $aReplaced[1]

$hFile = FileOpen(@TempDir & "\tasks.txt", "r")

While 1
    $line = FileReadLine($hFile)
    If (@error == -1) Then ExitLoop

    If StringInStr($line, "Pr*t", 2) And StringInStr($line, "N/A", 2) Then
        _ArrayAdd($aReplaced, StringRegExpReplace($line, "(.*?)[0-9](.*)", "$1-$2"))
    EndIf
WEnd

FileClose($hFile)

_ArrayDisplay($aReplaced)
 
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer les tâches planifiées

#4

Message par mikell »

Essaye

Code : Tout sélectionner

  If StringInStr($line, "Pr*t", 2) And [b]not[/b] StringInStr($line, "N/A", 2) Then
        _ArrayAdd($aReplaced, StringRegExpReplace($line, "(.*?)\s*\d.+", "$1"))
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Récupérer les tâches planifiées

#5

Message par jguinch »

Sans passer par un fichier externe, et sans faire du ligne à ligne :
► Afficher le texte
L'idée est la même que celle de Mikell : on cherche une date dans la ligne qui contient "Pret".

@Mikell : les wildcards n'ont pas l'air d'être supporté par StringInStr :P

Edit : petite modif, j'avais oublié de ne pas prendre les blancs après le nom de chaque tâche
Modifié en dernier par jguinch le dim. 29 déc. 2013 17:09, modifié 1 fois.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupérer les tâches planifiées

#6

Message par mikell »

C'est de la basse vengeance trollesque :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Récupérer les tâches planifiées

#7

Message par jguinch »

:wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Dinath
Niveau 1
Niveau 1
Messages : 3
Enregistré le : sam. 28 déc. 2013 14:17
Status : Hors ligne

Re: [..] Récupérer les tâches planifiées

#8

Message par Dinath »

Salut les gars ;)
@Mikell : les wildcards n'ont pas l'air d'être supporté par StringInStr :P
En effet !

Voici donc mon code, je ne peux pas passer par ta solution Jguinch car j'ai besoin de récupérer le chemin du dossier devant Dossier : \... :?

Code : Tout sélectionner

RunWait(@ComSpec & " /c " & 'schtasks /query /fo table > %temp%\tasks.txt', "", @SW_HIDE)

    $hFile = FileOpen(@TempDir & "\tasks.txt", "r")

    While 1
        $line = FileReadLine($hFile)
        If (@error == -1) Then ExitLoop

        If StringInStr($line, "Dossier", 2) Then $folder = StringRegExpReplace($line, ".*\:\h(.*)", "$1")

        If StringInStr($line, "Prˆt", 2) And Not StringInStr($line, "N/A", 2) Then
            $taskString = $folder & "\" & StringRegExpReplace($line, "(.*?)\s*\d.+", "$1")
            FileWriteLine($TXT, $taskString & $br)
            _ListViewAddItem("" & "|" & $found & "|" & $chkbox_label_task & "|" & $taskString, $listview_task)
            $content_task = True
        EndIf

    WEnd

    FileClose($hFile)
 
Merci :)
Répondre