Commit da66bb024213ac0973353761f4a8f073e8027b4c
1 parent
323b8dca
v1.18.0.0
- megadhatók a backupnál és a filecleaner-ben a kizárható filenevek mask listája
Showing
9 changed files
with
76 additions
and
29 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/Manager - BackupPackageManager.cs
@@ -90,7 +90,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -90,7 +90,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
90 | foreach (var bf in bp.Xml_BackupFolderList) { BackupPackageManagerCore.FolderZipBackup(bf, tempfolderpath); } | 90 | foreach (var bf in bp.Xml_BackupFolderList) { BackupPackageManagerCore.FolderZipBackup(bf, tempfolderpath); } |
91 | foreach (var sqldb in bp.Xml_BackupSQLDataBaseList) { SQLDataBaseManagerNS.SQLDataBaseManager.Execute(sqldb.Xml_Key,sqldb.Xml_DBBackup,sqldb.Xml_ScriptBackup,sqldb.Xml_TableDataBackup, tempfolderpath, timestamp); } | 91 | foreach (var sqldb in bp.Xml_BackupSQLDataBaseList) { SQLDataBaseManagerNS.SQLDataBaseManager.Execute(sqldb.Xml_Key,sqldb.Xml_DBBackup,sqldb.Xml_ScriptBackup,sqldb.Xml_TableDataBackup, tempfolderpath, timestamp); } |
92 | 92 | ||
93 | - BackupPackageManagerCore.CreatePackageFile(bp.Xml_PackageName, tempfolderpath, destinationfilename,destinationfolder, bp.Xml_CreateExe, bp.Xml_SourceIncludeFilenameMaskList); | 93 | + BackupPackageManagerCore.CreatePackageFile(bp.Xml_PackageName, tempfolderpath, destinationfilename,destinationfolder, bp.Xml_CreateExe, bp.Xml_SourceIncludeFilenameMaskList, bp.Xml_ExcludeMaskList); |
94 | if (Directory.Exists(tempfolderpath)) { Directory.Delete(tempfolderpath,true); } | 94 | if (Directory.Exists(tempfolderpath)) { Directory.Delete(tempfolderpath,true); } |
95 | } | 95 | } |
96 | catch (Exception ex) { ColorConsole.WriteLine(ex.MessageNested(), ConsoleColor.Red); } | 96 | catch (Exception ex) { ColorConsole.WriteLine(ex.MessageNested(), ConsoleColor.Red); } |
@@ -138,7 +138,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -138,7 +138,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
138 | } | 138 | } |
139 | if (lineix == 2) | 139 | if (lineix == 2) |
140 | { | 140 | { |
141 | - ColorConsole.Write($"{bp.Xml_SourceIncludeFilenameMaskList}", ConsoleColor.White, prefix: "Mask:"); | 141 | + ColorConsole.Write($"{bp.Xml_SourceIncludeFilenameMaskList}", ConsoleColor.White, prefix: "Incl.mask:"); |
142 | + ColorConsole.Write($"{bp.Xml_ExcludeMaskList}", ConsoleColor.White, prefix: " Excl.mask:"); | ||
142 | ColorConsole.Write($"{bp.SizePackageTotal}", ConsoleColor.White, prefix: ", Bytes to include:"); | 143 | ColorConsole.Write($"{bp.SizePackageTotal}", ConsoleColor.White, prefix: ", Bytes to include:"); |
143 | ColorConsole.WriteLine(""); | 144 | ColorConsole.WriteLine(""); |
144 | return " "; | 145 | return " "; |
@@ -157,7 +158,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -157,7 +158,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
157 | if (bf.FolderExists) | 158 | if (bf.FolderExists) |
158 | { | 159 | { |
159 | var di = new DirectoryInfo(bf.Xml_Path); | 160 | var di = new DirectoryInfo(bf.Xml_Path); |
160 | - bp.SizePackageTotal += Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS.FileCleanerManagerCore.DirSize(di, bf.Xml_IncludeFileNameMask, bf.Xml_IncludeFileFullPathRegex, recurse: true); | 161 | + bp.SizePackageTotal += Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS.FileCleanerManagerCore.DirSize(di, bf.Xml_IncludeFileNameMask, bf.Xml_ExcludeFileNameMaskList, bf.Xml_IncludeFileFullPathRegex, recurse: true); |
161 | } | 162 | } |
162 | } | 163 | } |
163 | return bp; | 164 | return bp; |
@@ -183,6 +184,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -183,6 +184,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
183 | string destinationbackupfile = bf.Xml_BackupToFile; | 184 | string destinationbackupfile = bf.Xml_BackupToFile; |
184 | if (string.IsNullOrEmpty(destinationbackupfile)) { destinationbackupfile = (new DirectoryInfo(foldertobackuppath)).Name + ".zip"; } | 185 | if (string.IsNullOrEmpty(destinationbackupfile)) { destinationbackupfile = (new DirectoryInfo(foldertobackuppath)).Name + ".zip"; } |
185 | string includefilenamemask = bf.Xml_IncludeFileNameMask; | 186 | string includefilenamemask = bf.Xml_IncludeFileNameMask; |
187 | + string excludefilenamemask = bf.Xml_ExcludeFileNameMaskList; | ||
186 | string includefullpathregex = bf.Xml_IncludeFileFullPathRegex; | 188 | string includefullpathregex = bf.Xml_IncludeFileFullPathRegex; |
187 | 189 | ||
188 | var destinationfile = Path.GetFileNameWithoutExtension(destinationbackupfile); | 190 | var destinationfile = Path.GetFileNameWithoutExtension(destinationbackupfile); |
@@ -192,7 +194,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -192,7 +194,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
192 | if (File.Exists(destinationbackupfile)) { File.Delete(destinationbackupfile); } | 194 | if (File.Exists(destinationbackupfile)) { File.Delete(destinationbackupfile); } |
193 | 195 | ||
194 | if (!Path.IsPathRooted(foldertobackuppath)) { foldertobackuppath = Path.Combine(Directory.GetCurrentDirectory(), foldertobackuppath); } | 196 | if (!Path.IsPathRooted(foldertobackuppath)) { foldertobackuppath = Path.Combine(Directory.GetCurrentDirectory(), foldertobackuppath); } |
195 | - ZipTools.CreateEntriesFromDirectoryContent(foldertobackuppath, destinationbackupfile, includefilenamemask,includefullpathregex); | 197 | + ZipTools.CreateEntriesFromDirectoryContent(foldertobackuppath, destinationbackupfile, includefilenamemask, excludefilenamemask,includefullpathregex); |
196 | ColorConsole.WriteLine($"Folder backup created. Name:{foldertobackuppath}", ConsoleColor.DarkGreen); | 198 | ColorConsole.WriteLine($"Folder backup created. Name:{foldertobackuppath}", ConsoleColor.DarkGreen); |
197 | } | 199 | } |
198 | /// <summary> | 200 | /// <summary> |
@@ -205,7 +207,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -205,7 +207,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
205 | /// <param name="vars">substitution vars</param> | 207 | /// <param name="vars">substitution vars</param> |
206 | /// <param name="createexe">if true, exe self extractor will be created, otherwise zip file; the extension of the package file is zip or exe</param> | 208 | /// <param name="createexe">if true, exe self extractor will be created, otherwise zip file; the extension of the package file is zip or exe</param> |
207 | /// <param name="sourceincludefilenamemaskList">comma separated list of masks for the files to include (NOT regex! "old fashioned" masking characters, like ?/* can be used)</param> | 209 | /// <param name="sourceincludefilenamemaskList">comma separated list of masks for the files to include (NOT regex! "old fashioned" masking characters, like ?/* can be used)</param> |
208 | - public static void CreatePackageFile(string packagename,string sourcedirectorypath, string destinationfilename =null,string destinationfolder=null,bool createexe=true,string sourceincludefilenamemaskList=null) | 210 | + public static void CreatePackageFile(string packagename,string sourcedirectorypath, string destinationfilename =null,string destinationfolder=null,bool createexe=true,string sourceincludefilenamemaskList=null,string excludeliststring = null) |
209 | { | 211 | { |
210 | string[] sourceinclfnamemasklist = sourceincludefilenamemaskList.Split(','); | 212 | string[] sourceinclfnamemasklist = sourceincludefilenamemaskList.Split(','); |
211 | bool createselfextractor = createexe; | 213 | bool createselfextractor = createexe; |
@@ -231,18 +233,23 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -231,18 +233,23 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
231 | string addfilecommand = "a"; | 233 | string addfilecommand = "a"; |
232 | string response; | 234 | string response; |
233 | string packagefile; | 235 | string packagefile; |
236 | + | ||
237 | + string[] excludelist = excludeliststring.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); | ||
238 | + string excludeswitches = ""; | ||
239 | + foreach (var exstr in excludelist) excludeswitches += $" -x!{exstr}"; | ||
240 | + | ||
234 | if (createselfextractor) | 241 | if (createselfextractor) |
235 | { | 242 | { |
236 | string archivetype_7z = "-t7z"; | 243 | string archivetype_7z = "-t7z"; |
237 | string createsfx = "-sfx"; | 244 | string createsfx = "-sfx"; |
238 | packagefile = packageEXEfilepath; | 245 | packagefile = packageEXEfilepath; |
239 | - response = Tools.ExecuteAndGetStdIo("7z.exe", $"{addfilecommand} {packagefile} {includeliststr} {recursesubdirs} {archivetype_7z} {createsfx}"); | 246 | + response = Tools.ExecuteAndGetStdIo("7z.exe", $"{addfilecommand} {packagefile} {includeliststr} {recursesubdirs} {excludeswitches} {archivetype_7z} {createsfx} "); |
240 | } | 247 | } |
241 | else | 248 | else |
242 | { | 249 | { |
243 | string archivetype_zip = "-tzip"; | 250 | string archivetype_zip = "-tzip"; |
244 | packagefile = packageZIPfilepath; | 251 | packagefile = packageZIPfilepath; |
245 | - response = Tools.ExecuteAndGetStdIo("7z.exe", $"{addfilecommand} {packagefile} {includeliststr} {recursesubdirs} {archivetype_zip}"); | 252 | + response = Tools.ExecuteAndGetStdIo("7z.exe", $"{addfilecommand} {packagefile} {includeliststr} {recursesubdirs} {excludeswitches} {archivetype_zip}"); |
246 | } | 253 | } |
247 | ColorConsole.WriteLine($"Backup package created. Package name:{packagename}, package file: {packagefile}", ConsoleColor.Green); | 254 | ColorConsole.WriteLine($"Backup package created. Package name:{packagename}, package file: {packagefile}", ConsoleColor.Green); |
248 | 255 | ||
@@ -358,6 +365,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -358,6 +365,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
358 | public string Xml_PackageFilePath; | 365 | public string Xml_PackageFilePath; |
359 | public string Xml_TempDirectoryPath; | 366 | public string Xml_TempDirectoryPath; |
360 | public string Xml_SourceIncludeFilenameMaskList; | 367 | public string Xml_SourceIncludeFilenameMaskList; |
368 | + public string Xml_ExcludeMaskList; | ||
361 | public bool Xml_CreateExe; | 369 | public bool Xml_CreateExe; |
362 | public List<BackupFolder> Xml_BackupFolderList; | 370 | public List<BackupFolder> Xml_BackupFolderList; |
363 | public List<BackupSQLDataBase> Xml_BackupSQLDataBaseList; | 371 | public List<BackupSQLDataBase> Xml_BackupSQLDataBaseList; |
@@ -394,6 +402,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -394,6 +402,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
394 | Xml_Key = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Key), backupackagexml, XmlStructure.BackupPackage.Attributes.Key.Values.DEFAULT); | 402 | Xml_Key = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Key), backupackagexml, XmlStructure.BackupPackage.Attributes.Key.Values.DEFAULT); |
395 | Xml_Description = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Description), backupackagexml, Xml_PackageName); | 403 | Xml_Description = GetValue(nameof(XmlStructure.BackupPackage.Attributes.Description), backupackagexml, Xml_PackageName); |
396 | Xml_SourceIncludeFilenameMaskList = GetValue(nameof(XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList), backupackagexml, XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList.Values.DEFAULT); | 404 | Xml_SourceIncludeFilenameMaskList = GetValue(nameof(XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList), backupackagexml, XmlStructure.BackupPackage.Attributes.IncludeFilenameMaskList.Values.DEFAULT); |
405 | + Xml_ExcludeMaskList = GetValue(nameof(XmlStructure.BackupPackage.Attributes.ExcludeFilenameMaskList), backupackagexml, XmlStructure.BackupPackage.Attributes.ExcludeFilenameMaskList.Values.DEFAULT); | ||
397 | 406 | ||
398 | Xml_BackupFolderList = new List<BackupFolder>(); | 407 | Xml_BackupFolderList = new List<BackupFolder>(); |
399 | //var conditionxmlList = GetAllXElements(foldertocleanxml, nameof(XmlStructure.FolderToClean.Conditions), nameof(XmlStructure.FolderToClean.Conditions.Condition)); | 408 | //var conditionxmlList = GetAllXElements(foldertocleanxml, nameof(XmlStructure.FolderToClean.Conditions), nameof(XmlStructure.FolderToClean.Conditions.Condition)); |
@@ -424,6 +433,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -424,6 +433,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
424 | Xml_TempDirectoryPath = bp.Xml_TempDirectoryPath; | 433 | Xml_TempDirectoryPath = bp.Xml_TempDirectoryPath; |
425 | Xml_BackupSQLDataBaseList = bp.Xml_BackupSQLDataBaseList.Select(c => new BackupSQLDataBase(c)).ToList(); ; | 434 | Xml_BackupSQLDataBaseList = bp.Xml_BackupSQLDataBaseList.Select(c => new BackupSQLDataBase(c)).ToList(); ; |
426 | Xml_SourceIncludeFilenameMaskList = bp.Xml_SourceIncludeFilenameMaskList; | 435 | Xml_SourceIncludeFilenameMaskList = bp.Xml_SourceIncludeFilenameMaskList; |
436 | + Xml_ExcludeMaskList = bp.Xml_ExcludeMaskList; | ||
427 | Xml_CreateExe = bp.Xml_CreateExe; | 437 | Xml_CreateExe = bp.Xml_CreateExe; |
428 | } | 438 | } |
429 | #endregion cloner constructor | 439 | #endregion cloner constructor |
@@ -451,6 +461,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -451,6 +461,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
451 | public static class Description { } | 461 | public static class Description { } |
452 | public static class CreateExe { public static class Values { public const bool DEFAULT = true; } } | 462 | public static class CreateExe { public static class Values { public const bool DEFAULT = true; } } |
453 | public static class IncludeFilenameMaskList { public static class Values { public const string DEFAULT = "*"; } } | 463 | public static class IncludeFilenameMaskList { public static class Values { public const string DEFAULT = "*"; } } |
464 | + public static class ExcludeFilenameMaskList { public static class Values { public const string DEFAULT = ""; } } | ||
454 | public static class PackageFilePath{ public static class Values { public const string DEFAULT = "BackupPackage_{TIMESTAMP}_{PACKAGENAME}"; } } | 465 | public static class PackageFilePath{ public static class Values { public const string DEFAULT = "BackupPackage_{TIMESTAMP}_{PACKAGENAME}"; } } |
455 | public static class TempDirectoryPath { public static class Values { public const string DEFAULT = ""; } } | 466 | public static class TempDirectoryPath { public static class Values { public const string DEFAULT = ""; } } |
456 | } | 467 | } |
@@ -462,6 +473,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -462,6 +473,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
462 | public static class Description { } | 473 | public static class Description { } |
463 | public static class BackupToFile { } | 474 | public static class BackupToFile { } |
464 | public static class IncludeNameMask { public class Values { public const string DEFAULT = "*"; } } | 475 | public static class IncludeNameMask { public class Values { public const string DEFAULT = "*"; } } |
476 | + public static class ExcludeNameMaskList { public class Values { public const string DEFAULT = ""; } } | ||
465 | public static class IncludePathRegexp { public class Values { public const string DEFAULT = ".*"; } } | 477 | public static class IncludePathRegexp { public class Values { public const string DEFAULT = ".*"; } } |
466 | } | 478 | } |
467 | } | 479 | } |
@@ -488,6 +500,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -488,6 +500,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
488 | Xml_Description = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.Description), backupfolderxml, Xml_Path); | 500 | Xml_Description = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.Description), backupfolderxml, Xml_Path); |
489 | Xml_BackupToFile = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.BackupToFile), backupfolderxml, ""); | 501 | Xml_BackupToFile = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.BackupToFile), backupfolderxml, ""); |
490 | Xml_IncludeFileNameMask = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.IncludeNameMask), backupfolderxml, XmlStructure.BackupPackage.BackupFolder.Attributes.IncludeNameMask.Values.DEFAULT); | 502 | Xml_IncludeFileNameMask = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.IncludeNameMask), backupfolderxml, XmlStructure.BackupPackage.BackupFolder.Attributes.IncludeNameMask.Values.DEFAULT); |
503 | + Xml_ExcludeFileNameMaskList = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.ExcludeNameMaskList), backupfolderxml, XmlStructure.BackupPackage.BackupFolder.Attributes.ExcludeNameMaskList.Values.DEFAULT); | ||
491 | Xml_IncludeFileFullPathRegex = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.IncludePathRegexp), backupfolderxml, XmlStructure.BackupPackage.BackupFolder.Attributes.IncludePathRegexp.Values.DEFAULT); | 504 | Xml_IncludeFileFullPathRegex = GetValue(nameof(XmlStructure.BackupPackage.BackupFolder.Attributes.IncludePathRegexp), backupfolderxml, XmlStructure.BackupPackage.BackupFolder.Attributes.IncludePathRegexp.Values.DEFAULT); |
492 | } | 505 | } |
493 | public BackupFolder(BackupFolder bf) | 506 | public BackupFolder(BackupFolder bf) |
@@ -497,12 +510,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | @@ -497,12 +510,14 @@ namespace Vrh.Log4Pro.MaintenanceConsole.BackupPackageManagerNS | ||
497 | Xml_BackupToFile = bf.Xml_BackupToFile; | 510 | Xml_BackupToFile = bf.Xml_BackupToFile; |
498 | FolderExists = bf.FolderExists; | 511 | FolderExists = bf.FolderExists; |
499 | Xml_IncludeFileNameMask = bf.Xml_IncludeFileNameMask; | 512 | Xml_IncludeFileNameMask = bf.Xml_IncludeFileNameMask; |
513 | + Xml_ExcludeFileNameMaskList= bf.Xml_ExcludeFileNameMaskList; | ||
500 | Xml_IncludeFileFullPathRegex = bf.Xml_IncludeFileFullPathRegex; | 514 | Xml_IncludeFileFullPathRegex = bf.Xml_IncludeFileFullPathRegex; |
501 | } | 515 | } |
502 | public string Xml_Path; | 516 | public string Xml_Path; |
503 | public string Xml_Description; | 517 | public string Xml_Description; |
504 | public string Xml_BackupToFile; | 518 | public string Xml_BackupToFile; |
505 | public string Xml_IncludeFileNameMask; | 519 | public string Xml_IncludeFileNameMask; |
520 | + public string Xml_ExcludeFileNameMaskList; | ||
506 | public string Xml_IncludeFileFullPathRegex; | 521 | public string Xml_IncludeFileFullPathRegex; |
507 | public bool FolderExists; | 522 | public bool FolderExists; |
508 | 523 |
Vrh.Log4Pro.MaintenanceConsole/Manager - FileCleanerManager.cs
@@ -16,6 +16,7 @@ using System.Diagnostics; | @@ -16,6 +16,7 @@ using System.Diagnostics; | ||
16 | using Vrh.Log4Pro.MaintenanceConsole.MenuNS; | 16 | using Vrh.Log4Pro.MaintenanceConsole.MenuNS; |
17 | using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; | 17 | using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; |
18 | using Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS; | 18 | using Vrh.Log4Pro.MaintenanceConsole.CommandLineParserNS; |
19 | +using Vrh.Log4Pro.MaintenanceConsole.ToolsNS; | ||
19 | 20 | ||
20 | using Vrh.XmlProcessing; | 21 | using Vrh.XmlProcessing; |
21 | using VRH.Common; | 22 | using VRH.Common; |
@@ -128,7 +129,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -128,7 +129,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
128 | ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: "Recurse:", bracket: "[]"); | 129 | ColorConsole.Write($"{ws.Xml_Recurse}", fc2, prefix: "Recurse:", bracket: "[]"); |
129 | var fc0 = ws.Xml_RemoveEmptyFolder ? ConsoleColor.Green : ConsoleColor.Yellow; | 130 | var fc0 = ws.Xml_RemoveEmptyFolder ? ConsoleColor.Green : ConsoleColor.Yellow; |
130 | ColorConsole.Write($"{ws.Xml_RemoveEmptyFolder}", fc0, prefix: ", Remove empty folder:", bracket: "[]"); | 131 | ColorConsole.Write($"{ws.Xml_RemoveEmptyFolder}", fc0, prefix: ", Remove empty folder:", bracket: "[]"); |
131 | - ColorConsole.WriteLine(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:"); | 132 | + ColorConsole.Write(ws.Xml_IncludeMask, ConsoleColor.Yellow, prefix: ", Include mask:"); |
133 | + ColorConsole.WriteLine(ws.Xml_ExcludeMaskList, ConsoleColor.Yellow, prefix: ", Exclude mask:"); | ||
132 | return " "; | 134 | return " "; |
133 | } | 135 | } |
134 | else if (lineix == 3) | 136 | else if (lineix == 3) |
@@ -175,8 +177,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -175,8 +177,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
175 | if (ftc.FolderExists) | 177 | if (ftc.FolderExists) |
176 | { | 178 | { |
177 | var di = new DirectoryInfo(ftc.Xml_DirectoryPath); | 179 | var di = new DirectoryInfo(ftc.Xml_DirectoryPath); |
178 | - ftc.SizeFolderTotal = FileCleanerManagerCore.DirSize(di,"*","",ftc.Xml_Recurse); | ||
179 | - ftc.SizeSelectedBeforeClean = FileCleanerManagerCore.DirSize(di, ftc.Xml_IncludeMask, ftc.Xml_IncludeFullpathRegexp, ftc.Xml_Recurse); | 180 | + ftc.SizeFolderTotal = FileCleanerManagerCore.DirSize(di,"*","","",ftc.Xml_Recurse); |
181 | + ftc.SizeSelectedBeforeClean = FileCleanerManagerCore.DirSize(di, ftc.Xml_IncludeMask,ftc.Xml_ExcludeMaskList, ftc.Xml_IncludeFullpathRegexp, ftc.Xml_Recurse); | ||
180 | ftc.SizeSelectedCleaned = FileCleanerManagerCore.CleanFolderFiles(di,ftc,delete:false); | 182 | ftc.SizeSelectedCleaned = FileCleanerManagerCore.CleanFolderFiles(di,ftc,delete:false); |
181 | } | 183 | } |
182 | return ftc; | 184 | return ftc; |
@@ -199,17 +201,25 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -199,17 +201,25 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
199 | #endregion IsDirectoryEmpty | 201 | #endregion IsDirectoryEmpty |
200 | 202 | ||
201 | #region public GetDirSize | 203 | #region public GetDirSize |
202 | - public static long DirSize(DirectoryInfo d, string filenamemask, string filefullpathregex, bool recurse) | 204 | + public static long DirSize(DirectoryInfo d, string includefilenamemask,string excludefilenamemaskcsvlist, string filefullpathregex, bool recurse) |
203 | { | 205 | { |
204 | long size = 0; | 206 | long size = 0; |
205 | // Add file sizes. | 207 | // Add file sizes. |
206 | - FileInfo[] fis = d.GetFiles(filenamemask, SearchOption.TopDirectoryOnly); | ||
207 | - if (fis != null) { foreach (FileInfo fi in fis) { if (Regex.Match(fi.FullName, filefullpathregex).Success) { size += fi.Length; } } } | 208 | + FileInfo[] fis = d.GetFiles(includefilenamemask, SearchOption.TopDirectoryOnly); |
209 | + if (fis != null) | ||
210 | + { | ||
211 | + foreach (FileInfo fi in fis) | ||
212 | + { | ||
213 | + bool toinclude1 = Regex.Match(fi.FullName, filefullpathregex, RegexOptions.IgnoreCase).Success; | ||
214 | + bool toinclude2 = Regex.Match(fi.Name, ZipTools.FileNameMaskListToRegex(excludefilenamemaskcsvlist), RegexOptions.IgnoreCase).Success; | ||
215 | + if (toinclude1 && toinclude2) { size += fi.Length; } | ||
216 | + } | ||
217 | + } | ||
208 | // Add subdirectory sizes. | 218 | // Add subdirectory sizes. |
209 | if (recurse) | 219 | if (recurse) |
210 | { | 220 | { |
211 | DirectoryInfo[] dis = d.GetDirectories(); | 221 | DirectoryInfo[] dis = d.GetDirectories(); |
212 | - if (dis != null) { foreach (DirectoryInfo di in dis) { size += DirSize(di, filenamemask, filefullpathregex, recurse); } } | 222 | + if (dis != null) { foreach (DirectoryInfo di in dis) { size += DirSize(di, includefilenamemask, excludefilenamemaskcsvlist, filefullpathregex, recurse); } } |
213 | } | 223 | } |
214 | return size; | 224 | return size; |
215 | } | 225 | } |
@@ -291,6 +301,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -291,6 +301,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
291 | var fl = fi.Length; | 301 | var fl = fi.Length; |
292 | try | 302 | try |
293 | { | 303 | { |
304 | + if (Regex.Match(fi.Name, ZipTools.FileNameMaskListToRegex(ftc.Xml_ExcludeMaskList)).Success) continue; | ||
294 | if (delete) { File.Delete(fi.FullName); } | 305 | if (delete) { File.Delete(fi.FullName); } |
295 | cleanedsize += fl; | 306 | cleanedsize += fl; |
296 | } | 307 | } |
@@ -361,6 +372,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -361,6 +372,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
361 | public bool Xml_Recurse; | 372 | public bool Xml_Recurse; |
362 | public bool Xml_RemoveEmptyFolder; | 373 | public bool Xml_RemoveEmptyFolder; |
363 | public string Xml_IncludeMask; | 374 | public string Xml_IncludeMask; |
375 | + public string Xml_ExcludeMaskList; | ||
364 | public string Xml_IncludeFullpathRegexp; | 376 | public string Xml_IncludeFullpathRegexp; |
365 | public bool Xml_OrConditionList = true; | 377 | public bool Xml_OrConditionList = true; |
366 | public List<Condition> Xml_ConditionList; | 378 | public List<Condition> Xml_ConditionList; |
@@ -394,6 +406,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -394,6 +406,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
394 | Xml_Recurse = GetValue(nameof(XmlStructure.FolderToClean.Attributes.Recurse), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Recurse.Values.DEFAULT); | 406 | Xml_Recurse = GetValue(nameof(XmlStructure.FolderToClean.Attributes.Recurse), foldertocleanxml, XmlStructure.FolderToClean.Attributes.Recurse.Values.DEFAULT); |
395 | Xml_RemoveEmptyFolder = GetValue(nameof(XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder), foldertocleanxml, XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder.Values.DEFAULT); | 407 | Xml_RemoveEmptyFolder = GetValue(nameof(XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder), foldertocleanxml, XmlStructure.FolderToClean.Attributes.RemoveEmptyFolder.Values.DEFAULT); |
396 | Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT); | 408 | Xml_IncludeMask = GetValue(nameof(XmlStructure.FolderToClean.Attributes.IncludeMask), foldertocleanxml, XmlStructure.FolderToClean.Attributes.IncludeMask.Values.DEFAULT); |
409 | + Xml_ExcludeMaskList = GetValue(nameof(XmlStructure.FolderToClean.Attributes.ExcludeMaskList), foldertocleanxml, XmlStructure.FolderToClean.Attributes.ExcludeMaskList.Values.DEFAULT); | ||
397 | Xml_IncludeFullpathRegexp = GetValue(GetXElement(foldertocleanxml,nameof(XmlStructure.FolderToClean.IncludeFullpathRegexp)), XmlStructure.FolderToClean.IncludeFullpathRegexp.Values.DEFAULT); | 410 | Xml_IncludeFullpathRegexp = GetValue(GetXElement(foldertocleanxml,nameof(XmlStructure.FolderToClean.IncludeFullpathRegexp)), XmlStructure.FolderToClean.IncludeFullpathRegexp.Values.DEFAULT); |
398 | Xml_IncludeFullpathRegexp = Xml_IncludeFullpathRegexp.Replace("{DTSREGEX}", commondatetimestampregex).Replace("{TSREGEX}", commontimestampregex).Replace("{DSREGEX}", commondatestampregex); | 411 | Xml_IncludeFullpathRegexp = Xml_IncludeFullpathRegexp.Replace("{DTSREGEX}", commondatetimestampregex).Replace("{TSREGEX}", commontimestampregex).Replace("{DSREGEX}", commondatestampregex); |
399 | 412 | ||
@@ -417,6 +430,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -417,6 +430,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
417 | Xml_Recurse = ftc.Xml_Recurse; | 430 | Xml_Recurse = ftc.Xml_Recurse; |
418 | Xml_RemoveEmptyFolder = ftc.Xml_RemoveEmptyFolder; | 431 | Xml_RemoveEmptyFolder = ftc.Xml_RemoveEmptyFolder; |
419 | Xml_IncludeMask = ftc.Xml_IncludeMask; | 432 | Xml_IncludeMask = ftc.Xml_IncludeMask; |
433 | + Xml_ExcludeMaskList = ftc.Xml_ExcludeMaskList; | ||
420 | Xml_IncludeFullpathRegexp = ftc.Xml_IncludeFullpathRegexp; | 434 | Xml_IncludeFullpathRegexp = ftc.Xml_IncludeFullpathRegexp; |
421 | Xml_OrConditionList = ftc.Xml_OrConditionList; | 435 | Xml_OrConditionList = ftc.Xml_OrConditionList; |
422 | Xml_ConditionList = ftc.Xml_ConditionList.Select(c=>new Condition(c)).ToList(); ; | 436 | Xml_ConditionList = ftc.Xml_ConditionList.Select(c=>new Condition(c)).ToList(); ; |
@@ -498,6 +512,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | @@ -498,6 +512,13 @@ namespace Vrh.Log4Pro.MaintenanceConsole.FileCleanerManagerNS | ||
498 | public const string DEFAULT = "*.*"; | 512 | public const string DEFAULT = "*.*"; |
499 | } | 513 | } |
500 | } | 514 | } |
515 | + public static class ExcludeMaskList | ||
516 | + { | ||
517 | + public static class Values | ||
518 | + { | ||
519 | + public const string DEFAULT = ""; | ||
520 | + } | ||
521 | + } | ||
501 | } | 522 | } |
502 | public static class IncludeFullpathRegexp | 523 | public static class IncludeFullpathRegexp |
503 | { | 524 | { |
Vrh.Log4Pro.MaintenanceConsole/Manager - SQLDataBaseManager.cs
@@ -546,7 +546,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -546,7 +546,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
546 | string ZIPbackupFullName = Path.Combine(backupdirectorypath, ZIPbackupfilename); | 546 | string ZIPbackupFullName = Path.Combine(backupdirectorypath, ZIPbackupfilename); |
547 | if (File.Exists(ZIPbackupFullName)) { File.Delete(ZIPbackupFullName); } | 547 | if (File.Exists(ZIPbackupFullName)) { File.Delete(ZIPbackupFullName); } |
548 | 548 | ||
549 | - ZipTools.CreateEntriesFromDirectoryContent(backupdirectorypath, ZIPbackupFullName, backupfilename, "", removearchivedfiles: false, storepathinzip: false); | 549 | + ZipTools.CreateEntriesFromDirectoryContent(backupdirectorypath, ZIPbackupFullName, backupfilename, "","", removearchivedfiles: false, storepathinzip: false); |
550 | if (File.Exists(backupFullName)) { File.Delete(backupFullName); } | 550 | if (File.Exists(backupFullName)) { File.Delete(backupFullName); } |
551 | returnfilename = ZIPbackupFullName; | 551 | returnfilename = ZIPbackupFullName; |
552 | } | 552 | } |
@@ -926,7 +926,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -926,7 +926,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
926 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Views.Cast<SqlSmoObject>().ToList(), vars); | 926 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Views.Cast<SqlSmoObject>().ToList(), vars); |
927 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Tables.Cast<SqlSmoObject>().ToList(), vars); | 927 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Tables.Cast<SqlSmoObject>().ToList(), vars); |
928 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Triggers.Cast<SqlSmoObject>().ToList(), vars); | 928 | ScriptOneObject(sqlserver, tempbackupdirectorypath, backupfilenamemask + backupfilenameext, sqldatabase.Triggers.Cast<SqlSmoObject>().ToList(), vars); |
929 | - if (createZip) { ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", backupts,removearchivedfiles:true, storepathinzip: false); } | 929 | + if (createZip) { ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql","", backupts,removearchivedfiles:true, storepathinzip: false); } |
930 | var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath); | 930 | var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath); |
931 | ColorConsole.WriteLine($"SQL scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen); | 931 | ColorConsole.WriteLine($"SQL scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen); |
932 | } | 932 | } |
@@ -1048,7 +1048,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | @@ -1048,7 +1048,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.SQLDataBaseManagerNS | ||
1048 | if (createZip) | 1048 | if (createZip) |
1049 | { | 1049 | { |
1050 | string fullpathregex = Regex.Escape(string.Join(";",backupfilepathlist)).Replace(';','|'); | 1050 | string fullpathregex = Regex.Escape(string.Join(";",backupfilepathlist)).Replace(';','|'); |
1051 | - ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql", fullpathregex, removearchivedfiles: true, storepathinzip: false); | 1051 | + ZipTools.CreateEntriesFromDirectoryContent(tempbackupdirectorypath, zipfilefullpath, "*.sql","", fullpathregex, removearchivedfiles: true, storepathinzip: false); |
1052 | } | 1052 | } |
1053 | var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath); | 1053 | var resultfilename = zipfilefullpath == null ? "-" : Path.GetFileName(zipfilefullpath); |
1054 | ColorConsole.WriteLine($"SQL data scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen); | 1054 | ColorConsole.WriteLine($"SQL data scripts created. DB name:'{dbname}'. BAK/ZIP file name:'{resultfilename}'", ConsoleColor.DarkGreen); |
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; | ||
32 | // You can specify all the values or you can default the Build and Revision Numbers | 32 | // You can specify all the values or you can default the Build and Revision Numbers |
33 | // by using the '*' as shown below: | 33 | // by using the '*' as shown below: |
34 | // [assembly: AssemblyVersion("1.0.*")] | 34 | // [assembly: AssemblyVersion("1.0.*")] |
35 | -[assembly: AssemblyVersion("1.17.1.0")] | ||
36 | -[assembly: AssemblyFileVersion("1.17.1.0")] | 35 | +[assembly: AssemblyVersion("1.18.0.0")] |
36 | +[assembly: AssemblyFileVersion("1.18.0.0")] |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Http.cs renamed to Vrh.Log4Pro.MaintenanceConsole/Tools - Http.cs
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - Membership.cs renamed to Vrh.Log4Pro.MaintenanceConsole/Tools - Membership.cs
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools - TcpIp.cs renamed to Vrh.Log4Pro.MaintenanceConsole/Tools - TcpIp.cs
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs renamed to Vrh.Log4Pro.MaintenanceConsole/Tools.cs
@@ -74,6 +74,18 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | @@ -74,6 +74,18 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | ||
74 | } | 74 | } |
75 | public static class ZipTools | 75 | public static class ZipTools |
76 | { | 76 | { |
77 | + public static string FileNameMaskListToRegex(string excludefilenamemaskcsvlist) | ||
78 | + { | ||
79 | + string pattern = ""; | ||
80 | + string regexor = ""; | ||
81 | + foreach (var exclmask in excludefilenamemaskcsvlist.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries)) | ||
82 | + { | ||
83 | + pattern += regexor + "(^" + Regex.Escape(exclmask.Replace(".", "__DOT__").Replace("*", "__STAR__").Replace("?", "__QM__")) | ||
84 | + .Replace("__DOT__", "[.]").Replace("__STAR__", ".*").Replace("__QM__", ".") + "$)"; | ||
85 | + regexor = "|"; | ||
86 | + } | ||
87 | + return "(" + pattern + ")"; | ||
88 | + } | ||
77 | public static void Extract1stFileFromZIP(string targetfilefullpath, string ZIPfilefullpath) | 89 | public static void Extract1stFileFromZIP(string targetfilefullpath, string ZIPfilefullpath) |
78 | { | 90 | { |
79 | if (File.Exists(targetfilefullpath)) { File.Delete(targetfilefullpath); } | 91 | if (File.Exists(targetfilefullpath)) { File.Delete(targetfilefullpath); } |
@@ -98,11 +110,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | @@ -98,11 +110,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | ||
98 | } | 110 | } |
99 | } | 111 | } |
100 | 112 | ||
101 | - public static void CreateEntriesFromDirectoryContent(string sourcefolderpath, string ZIPfilefullpath, string includefilenamemask, string includefullpathregex, bool removearchivedfiles = false,bool storepathinzip = true) | 113 | + public static void CreateEntriesFromDirectoryContent(string sourcefolderpath, string ZIPfilefullpath, string includefilenamemask, string excludefilenamemasklist, string includefullpathregex, bool removearchivedfiles = false,bool storepathinzip = true) |
102 | { | 114 | { |
103 | if (File.Exists(ZIPfilefullpath)) { File.Delete(ZIPfilefullpath); } | 115 | if (File.Exists(ZIPfilefullpath)) { File.Delete(ZIPfilefullpath); } |
104 | DirectoryInfo di = new DirectoryInfo(sourcefolderpath); | 116 | DirectoryInfo di = new DirectoryInfo(sourcefolderpath); |
105 | - var rgx = new Regex(includefullpathregex??""); | 117 | + var inclrgx = new Regex(includefullpathregex??""); |
118 | + var exclrgx = new Regex(FileNameMaskListToRegex(excludefilenamemasklist) ?? ""); | ||
106 | var archivedfiles = new List<string>(); | 119 | var archivedfiles = new List<string>(); |
107 | using (ZipArchive archive = ZipFile.Open(ZIPfilefullpath, ZipArchiveMode.Create)) | 120 | using (ZipArchive archive = ZipFile.Open(ZIPfilefullpath, ZipArchiveMode.Create)) |
108 | { | 121 | { |
@@ -113,10 +126,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | @@ -113,10 +126,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | ||
113 | int cpl = ColorConsole.CursorLeft; | 126 | int cpl = ColorConsole.CursorLeft; |
114 | foreach (var fi in fis) | 127 | foreach (var fi in fis) |
115 | { | 128 | { |
116 | - var entryname = storepathinzip | ||
117 | - ? fi.FullName.Substring((Path.GetPathRoot(fi.FullName)?.Length) ?? 0) | ||
118 | - : fi.Name; | ||
119 | - if (rgx.Match(fi.FullName).Success) | 129 | + var entryname = storepathinzip ? fi.FullName.Substring((Path.GetPathRoot(fi.FullName)?.Length) ?? 0) : fi.Name; |
130 | + if (inclrgx.Match(fi.FullName).Success && !exclrgx.Match(fi.Name).Success) | ||
120 | { | 131 | { |
121 | try | 132 | try |
122 | { | 133 | { |
Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj
@@ -359,13 +359,13 @@ | @@ -359,13 +359,13 @@ | ||
359 | <Reference Include="WindowsBase" /> | 359 | <Reference Include="WindowsBase" /> |
360 | </ItemGroup> | 360 | </ItemGroup> |
361 | <ItemGroup> | 361 | <ItemGroup> |
362 | - <Compile Include="ConsoleFunction - Tools - Http.cs" /> | ||
363 | - <Compile Include="ConsoleFunction - Tools - TcpIp.cs" /> | 362 | + <Compile Include="Tools - Http.cs" /> |
363 | + <Compile Include="Tools - TcpIp.cs" /> | ||
364 | <Compile Include="ConsoleFunction - CommandLineParser.cs" /> | 364 | <Compile Include="ConsoleFunction - CommandLineParser.cs" /> |
365 | <Compile Include="ConsoleFunction - ColorConsole.cs" /> | 365 | <Compile Include="ConsoleFunction - ColorConsole.cs" /> |
366 | <Compile Include="ConsoleFunction - Menu.cs" /> | 366 | <Compile Include="ConsoleFunction - Menu.cs" /> |
367 | - <Compile Include="ConsoleFunction - Tools - Membership.cs" /> | ||
368 | - <Compile Include="ConsoleFunction - Tools.cs" /> | 367 | + <Compile Include="Tools - Membership.cs" /> |
368 | + <Compile Include="Tools.cs" /> | ||
369 | <Compile Include="Manager - FTPManager.cs" /> | 369 | <Compile Include="Manager - FTPManager.cs" /> |
370 | <Compile Include="Manager - BackupPackageManager.cs" /> | 370 | <Compile Include="Manager - BackupPackageManager.cs" /> |
371 | <Compile Include="Manager - InstallManager.cs" /> | 371 | <Compile Include="Manager - InstallManager.cs" /> |