Bonjour,
J'ai quelques PC sous windows 7 et j'aimerais extraire tous les éléments d'un certains types de ceux-ci.
C'est à dire lister par exemple tous les fichiers en .jpg et .png (même dans les dossiers cachés) de mon disque C:/ et le copier sur un autre lecteur.
J'ai trouvé ce bout de code pour lister les fichiers :
Sauf qu'étant sous Win7, il est impossible d'accéder par le code à "C:\Documents and Settings" car c'est un dossier spécial (Or la plupart des élements sont dedans.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ///////////////////////////// // Lister tous les fichiers d'un dossier (et ses sous-dossiers) : // // 'allFiles' est ma StringCollection contenant la liste complete de tous les fichiers // Pourquoi une StringCollection ? Parce que les tableaux ont une taille fixe et // utiliser une StringCollection est le seul moyen de lister tous les fichiers de // dossiers et sous-dossiers. // (Merci à Bidou !) // // 'path' le dossier sélectionné // // 'ext' la liste des extensions pour filtrer les fichiers listés // // 'scanDirOk' un boolean me permettant d'accepter les scans des sous-dossiers // public StringCollection listAllFiles(StringCollection allFiles, string path, string ext, bool scanDirOk) { // listFilesCurrDir : Tableau contenant la liste des fichiers du dossier 'path' string[] listFilesCurrDir = Directory.GetFiles(path, ext); // On lit le tableau 'listFilesCurrDir' foreach (string rowFile in listFilesCurrDir) { // Si le fichier n'est pas deja dans la liste 'allFiles' if (allFiles.Contains(rowFile) == false) { // On ajoute le fichier (du moins son adresse) a 'allFiles' allFiles.Add(rowFile); } } // Vide la table 'listFilesCurrDir'pour la prochaine liste de sous-dossiers listFilesCurrDir = null; // Si on autorise la lecture des sous-dossiers if (scanDirOk) { // On liste tous les sous-dossiers présents dans le 'path' string[] listDirCurrDir = Directory.GetDirectories(path); // Si il existe des sous-dossiers (si la liste n'est pas vide) if (listDirCurrDir.Length != 0) { // On lit le tableau 'listDirCurrDir' foreach (string rowDir in listDirCurrDir) { // On relance la procédure pour qu'elle scanne chaque sous-dossier listAllFiles(allFiles, rowDir, ext, scanDirOk); } } // Vide la table 'listDirCurrDir'pour la prochaine liste de sous-dossiers listDirCurrDir = null; } // On retourne 'allFiles' return allFiles; }
J'avoue avoir besoin d'un coup de main sur ce coup là.
Merci d'avance.
Partager