Recuperation des infos des tasks scheduled

Description

Ce code est assez basic mais il peut s'averer tres utile dans une société ou l'on doit s'assurer de la bonne execution de taches planifiée de maintenance ou de sauvegarde...
Ce code s'execute quotidiènement et ennoi un mail rappelant les tache qui se sont executées la veille avec en rouge les eventuel probèmes

Source / Exemple :


ublic static DataTable FindScheduledTask(string sTaskName)
        {   
            //Debut Declaration
            string strDirFichier = "C:\\WINDOWS\\TASKS\\SchedLgU.Txt";    //Dir Fichier log tahce plani
            FileStream fs = new FileStream(strDirFichier, FileMode.Open);   //ouverture fichier log
            StreamReader sr = new StreamReader(fs, true);           //Lecture 
            int iPosition;                                          //Pointeur recherche de caratère dans ligne
            int iIndex1;                                            //Index de debut de mot
            int iIndex2;                                            //Index de fin de mot
            int iLenIndex;                                          //Longueur du mot
            string sLigne;                                          //Ligne lue
            string sLigneJobName;                                   //Nom de la tache recupérée dans ligne
            string sLigneProgName;                                  //Nom du programme recup
            string sLigneCodeSortie;                                //Code Sortie recup
            DateTime dtLigneDateFin;                                //Date Exec recup
            DataTable dt = new DataTable();                         //Tableau retourné
            DataRow drNew;                                          //Datarow d'insertion sur dt
            DataView dv = new DataView(dt);                         //DataView de lecture de dt
            
            dt.Columns.Add("Job", typeof(string));                  //Création structure de dt
            dt.Columns.Add("Prog", typeof(string));
            dt.Columns.Add("Type", typeof(string));
            dt.Columns.Add("DateFin", typeof(string));
            dt.Columns.Add("Sortie", typeof(string));
            sLigne = sr.ReadLine();
            
            while (sLigne!=null)                                    //Tant que il y a des lignes de log
            {
                iPosition = sLigne.IndexOf(sTaskName);              //Verif si ligne consernant la tache
                if (iPosition != -1)
                {   
                    sLigneJobName = sTaskName;                      //Recup du nom de la tache

                    iIndex1 = sLigne.IndexOf("(") + 1;              //Recup du nom du programme
                    iIndex2 = sLigne.IndexOf(")");
                    iLenIndex = iIndex2 - iIndex1;
                    sLigneProgName = sLigne.Substring(iIndex1,iLenIndex);

                    //Contôle d'avertissement
                    iPosition = sLigne.IndexOf("AVERTISSEMENT");
                    if (iPosition != -1)
                    {
                        dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(iIndex2 + 1, 19));
                        int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
                        if (i == 0)
                        {
                            drNew = dt.NewRow();
                            drNew["Job"] = sLigneJobName;
                            drNew["Prog"] = sLigneProgName;
                            drNew["Type"] = "AVERTISSEMENT";
                            drNew["DateFin"] = dtLigneDateFin;
                            drNew["Sortie"] = "NON TERMINEE";
                            dt.Rows.Add(drNew);
                        }
                    }
                    //Fin Contôle d'avertissement

                    else
                    {
                        sLigne = sr.ReadLine();                         //Ligne suivante

                        iPosition = sLigne.IndexOf("Quitté");           //Si Conserne Tache Quittée
                        if (iPosition != -1)
                        {
                            dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(9));
                            int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
                            if (i == 0)
                            {   //recup du code sortie
                                sLigne = sr.ReadLine();
                                iIndex1 = sLigne.IndexOf("(") + 1;
                                iIndex2 = sLigne.IndexOf(")");
                                iLenIndex = iIndex2 - iIndex1;
                                sLigneCodeSortie = sLigne.Substring(iIndex1, iLenIndex);

                                //memo dans tableau
                                drNew = dt.NewRow();
                                drNew["Job"] = sLigneJobName;
                                drNew["Prog"] = sLigneProgName;
                                drNew["Type"] = "Quitté";
                                drNew["DateFin"] = dtLigneDateFin;
                                drNew["Sortie"] = sLigneCodeSortie;
                                dt.Rows.Add(drNew);
                                //Fin memo dans tableau
                            }
                        }
                        else
                        {   
                            iPosition = sLigne.IndexOf("Démarré");           //Si Conserne Tache Démarré
                            if (iPosition != -1)
                            {
                                dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(10));
                                int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
                                if (i == 0)
                                {
                                    //memo dans tableau dt
                                    drNew = dt.NewRow();
                                    drNew["Job"] = sLigneJobName;
                                    drNew["Prog"] = sLigneProgName;
                                    drNew["Type"] = "Démarré";
                                    drNew["DateFin"] = dtLigneDateFin;
                                    dt.Rows.Add(drNew);
                                    // Fin memo dans tableau
                                }
                            }    
                        }
                    }   
                }
            
                sLigne = sr.ReadLine();
            }
            sr.Close();
            fs.Close();
            return (dt);
        }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.