1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
|
public static string errFile = ConfigurationManager.AppSettings["errFile"];
public static string suiviFile = ConfigurationManager.AppSettings["suiviFile"];
public static string resultFile = ConfigurationManager.AppSettings["resultFile"];
public static string fichierListe = ConfigurationManager.AppSettings["fichierListe"];
public static string pathShare= ConfigurationManager.AppSettings["pathShare"];
public static long nbFiles = 0;
public static long nbFolders = 0;
public static bool error = false;
public static long size = 0;
static void Main(string[] args)
{
using (FileStream fs = System.IO.File.Create(errFile))
{
fs.Close();
}
using (FileStream fs = System.IO.File.Create(suiviFile))
{
fs.Close();
}
using (FileStream fs = System.IO.File.Create(resultFile))
{
fs.Close();
}
string entete = "FolderName; Size; Folders; Files";
WriteFileStrUnicode(entete, resultFile);
try
{
mapDrive("X:", pathShare);
}
catch (Exception ex)
{
WriteFileStrUnicode(ex.Message, errFile);
Console.WriteLine(DateTime.Now + " : " + ex.Message);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
string[] lines = System.IO.File.ReadAllLines(Environment.CurrentDirectory + "\\" + fichierListe, Encoding.GetEncoding("iso-8859-1"));
foreach (string line in lines)
{
nbFiles = 0;
nbFolders = 0;
getInfo(line);
}
try
{
dismapDrive("X:");
}
catch (Exception ex)
{
WriteFileStrUnicode(ex.Message, errFile);
Console.WriteLine(DateTime.Now + " : " + ex.Message);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
static long getSizeAndCountFileFolders(string path)
{
string filename = "";
string[] folders = null;
string[] files = null;
//récupere la liste des dossiers dans un tableau
try
{
folders = Directory.GetDirectories(path);
//récupere la liste des fichiers dans un tableau
files = Directory.GetFiles(path);
}
catch (Exception ex)
{
WriteFileStrUnicode(DateTime.Now + " : " + path + " : " + ex.Message, errFile);
}
nbFolders += 1;
//parcours du tableau des fichiers
if (files != null)
{
foreach (string name in files)
{
try
{
filename = name;
FileInfo info = new FileInfo(name);
//ajout de la taille de chaque fichier a la variable size
size += info.Length;
nbFiles += 1;
WriteFileStrUnicode(DateTime.Now + " : " + name + "=======>" + size, suiviFile);
Console.WriteLine(name + "=======>" + size);
}
catch (Exception ex)
{
error = true;
WriteFileStrUnicode(DateTime.Now + " : " + filename + " : " + ex.Message, errFile);
}
}
}
if (folders != null)
{
//parcours du tableau des dossiers
foreach (string folder in folders)
{
//appel de la fonctions avec les chemins des sous dossiers
getSizeAndCountFileFolders(folder);
}
}
return size;
}
//Fonction qui scan le contenu du dossier en paramètre
public static void getInfo(string chemin)
{
size = 0;
long globalSize = 0;
WriteFileStrUnicode(DateTime.Now + " : " + chemin, suiviFile);
Console.WriteLine(DateTime.Now + " : " + chemin);
error = false;
globalSize = getSizeAndCountFileFolders(chemin);
if (!error)
WriteFileStrUnicode(chemin + ";" + size + ";" + nbFolders + ";" + nbFiles, resultFile);
else
WriteFileStrUnicode(@"/!\" + chemin + ";" + size + ";" + nbFolders + ";" + nbFiles, resultFile);
}
public static void WriteFileStrUnicode(string texte, string path)
{
try
{
StreamWriter sw = new StreamWriter(path, true, Encoding.Unicode);
sw.WriteLine(texte);
sw.Close();
}
catch (Exception ex)
{
WriteFileStrUnicode(ex.Message, errFile);
Console.WriteLine(ex.Message);
}
}
public static void mapDrive(string drive, string chemin)
{
IWshNetwork_Class network = new IWshNetwork_Class();
try
{
network.RemoveNetworkDrive(drive);
}
catch (Exception ex)
{
}
network.MapNetworkDrive(drive, chemin, Type.Missing);
}
public static void dismapDrive(string drive)
{
IWshNetwork_Class network = new IWshNetwork_Class();
try
{
network.RemoveNetworkDrive(drive);
}
catch (Exception ex)
{
}
}
} |
Partager