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);
}
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.