static void Main(string[] args) { tProgramData programData = new tProgramData(); cParam param = new cParam(); ParseParam(args, param, programData); // Проверяем путь if (!Directory.Exists(programData.pathBackup)) { sendMail(programData, string.Format(strErrorNotFoundPath, programData.pathBackup)); } else { List <tDataFile> fileList = new List <tDataFile>(); string[] files = Directory.GetFiles(programData.pathBackup).OrderByDescending(x => new FileInfo(x).CreationTime).ToArray(); foreach (string file in files) { fileList.Add(new tDataFile(file, Directory.GetCreationTime(file))); } int c = fileList.Count(); if (c == 0) { // Нет файлов в контролируемом каталоге sendMail(programData, strInfoNotArchiv); } else { tDataFile dataFile1 = fileList[0]; if (dataFile1.dateCreate <= DateTime.Today) { // Последний архив меньше сегодняшенго дня sendMail(programData, string.Format(strInfoOldArсhiv, dataFile1.dateCreate)); } else { if (c > 1) { tDataFile dataFile2 = fileList[1]; long lenFile1 = new FileInfo(dataFile1.name).Length; long lenFile2 = new FileInfo(dataFile2.name).Length; if (lenFile1 < lenFile2) { // Размер нового архива меньше чем старого sendMail(programData, string.Format(strInfoSizeNewArchivSmaller, lenFile1, dataFile1.name, lenFile2, dataFile2.name)); } } } } } }
// Загрузка данные из ini файла static void loadFromIni(string[] args, cParam param, tProgramData programData) { IniFiles ini = new IniFiles("param.ini"); string iniSection = "Основные настройки"; string iniSmtpServer = "smtpserver"; string iniUsername = "******"; string iniPassword = "******"; string iniMailto = "mailto"; string iniSubject = "subject"; string iniPathbackup = "pathbackup"; if (args.Count() == 0) { // Создадим INI файл с настройками ini.Write(iniSection, iniSmtpServer, ""); ini.Write(iniSection, iniUsername, ""); ini.Write(iniSection, iniPassword, ""); ini.Write(iniSection, iniMailto, ""); ini.Write(iniSection, iniSubject, ""); ini.Write(iniSection, iniPathbackup, ""); Console.WriteLine("17/08/2018 [email protected]"); Console.WriteLine("Программа контроля создания архивов."); Console.WriteLine("При запуске с параметрами контролирует каталог из параметра -pb"); Console.WriteLine("Если в каталоге сегодня не было свежего файла, значит архив не сделан"); Console.WriteLine("отправляет письмо на почту. Также если размер архива меньше чем прошлый"); Console.WriteLine("то также отправляет письмо на почту."); Console.WriteLine("Парамтеры: "); foreach (cParamData item in param) { Console.WriteLine("\t{0} {1}", item.command, item.descript); } } // Если в параметрах указано что брать данные из файла настроек, то // попробует получить из него данные if (param.Get("-f").data != "") { // читаем данные из файла programData.smtpServer = ini.Read(iniSection, iniSmtpServer); programData.userName = ini.Read(iniSection, iniUsername); programData.password = ini.Read(iniSection, iniPassword); programData.mailto = ini.Read(iniSection, iniMailto); programData.subject = ini.Read(iniSection, iniSubject); programData.pathBackup = ini.Read(iniSection, iniPathbackup); } }
// Callback for search / replace actions (null --> Goto) public frmFind(int s32_TotalLines, // only used for Goto cParam i_Param, // i_Param.b_Replace = false -> disable Replace button delFindReplace i_Callback) { InitializeComponent(); StoreWindowPos = true; // must be set in Constructor AFTER InitializeComponent() !! ms32_TotalLines = s32_TotalLines; mi_Callback = i_Callback; DialogResult = DialogResult.Cancel; string[] s_Lines = i_Param.s_Find.Replace("\r", "").Split('\n'); txtInput. Text = Functions.Left(s_Lines[0], 50); txtReplace.Text = i_Param.s_Replace; checkWholeWord.Checked = i_Param.b_WholeWord; // Enable the optional additional checkbox if (i_Param.s_CheckExtra1 != null) { checkExtra1.Text = i_Param.s_CheckExtra1; checkExtra1.Checked = i_Param.b_CheckExtra1; } else checkExtra1.Visible = false; lblReplace.Enabled = i_Param.b_Replace; txtReplace.Enabled = i_Param.b_Replace; btnReplace.Enabled = i_Param.b_Replace; if (mi_Callback == null) // Goto { this.Text = " Goto"; btnExecute.Text = "Goto"; lblHeading.Text = "Line"; checkWholeWord.Enabled = false; } else // Find / Replace { if (i_Param.b_Replace) this.Text = " Find / Replace"; else this.Text = " Find"; btnExecute.Text = "Find"; lblHeading.Text = "Search Text"; } }
static void ParseParam(string[] args, cParam param, tProgramData programData) { param.Add("-f", tParamData.tBoll, "", "Если указан, то настройки берутся из param.ini файла. Файл с пустыми настройками создан."); param.Add("-s", tParamData.tString, "smtp.yandex.ru:25", "адрес smtp сервера, например smtp.yandex.ru"); param.Add("-u", tParamData.tString, "", "почта под который делать отправку писем"); param.Add("-p", tParamData.tString, "", "пароль"); param.Add("-t", tParamData.tString, "", "адрес почты на который нужно отправлять письма, например [email protected]"); param.Add("-su", tParamData.tString, "", "тема письма"); param.Add("-pb", tParamData.tString, "", "контролируемый каталог с архивами"); param.Parse(args); programData.smtpServer = param.Get("-s").data; programData.userName = param.Get("-u").data; programData.password = param.Get("-p").data; programData.mailto = param.Get("-t").data; programData.subject = param.Get("-su").data; programData.pathBackup = param.Get("-pb").data; loadFromIni(args, param, programData); }
/// <summary> /// Replace /// </summary> private void OnButtonReplace(object sender, System.EventArgs e) { if (txtInput.Text.Length == 0) { lblStatus.SetTransientText("Find what ?"); return; } cParam i_Param = new cParam(); i_Param.b_Replace = true; i_Param.b_WholeWord = checkWholeWord.Checked; i_Param.b_CheckExtra1 = checkExtra1.Checked; i_Param.s_Find = txtInput. Text; i_Param.s_Replace = txtReplace.Text; lblStatus.SetTransientText(mi_Callback(i_Param)); }
/// <summary> /// Find or Goto /// </summary> private void OnButtonExecute(object sender, System.EventArgs e) { if (mi_Callback != null) // Find { if (txtInput.Text.Length == 0) { lblStatus.SetTransientText("Find what ?"); } else { cParam i_Param = new cParam(); i_Param.b_Replace = false; i_Param.b_WholeWord = checkWholeWord.Checked; i_Param.b_CheckExtra1 = checkExtra1.Checked; i_Param.s_Find = txtInput.Text; lblStatus.Text = "Searching...."; lblStatus.SetTransientText(mi_Callback(i_Param)); } } else // Goto { try { ms32_Line = int.Parse(txtInput.Text); } catch { ms32_Line = -1; } if (ms32_Line <= 0 || ms32_Line > ms32_TotalLines) { lblStatus.Text = "Searching...."; lblStatus.SetTransientText("Invalid line number!"); } else { DialogResult = DialogResult.OK; Close(); } } }