Extraire une liste de fichier

cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 - 1 mai 2010 à 22:05
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 7 mai 2010 à 03:03
bonsoir à tous
je voudrais faire une liste dans un fichier dirphoto.txt des noms de fichier de toutes mes photos qui sont sous un ensemble de sous répertoire du répertoire image! bien sur je voudrais faire ce code en C++ et ce pour Windows seulement.j'utilise Visual c++
je ne sais quelles fonctions à utiliser, quels include mettre

9 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
2 mai 2010 à 00:48
Pas besoin d'un programme en C ! La commande dir de l'interpréteur de commandes le fait très bien :
dir /A:-D /B /S > tonfichier.txt

---
VB.NET is good ... VB6 is better
0
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
2 mai 2010 à 16:15
bonjour
oui merci je connais, je l'ai déjà fait mais là je ne sais comment lancer cette commande lorsque je suis dans un prog en C++, je l'ai déjà fait en VB6
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
2 mai 2010 à 16:56
ShellExecute(NULL,"open","cmd.exe","/k ""dir /A:-D /B /S > listing.txt""",NULL,SW_SHOWNORMAL);

---
VB.NET is good ... VB6 is better
0
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
3 mai 2010 à 23:59
bonsoir
Merci, j'ai enfin réussi à lancer simplement cette ligne de commande

#include <windows.h>
int main(int argc, char *argv[])
{
 ShellExecute(NULL,"open","cmd.exe","/C ""dir G:\\Documents\\Pictures\\*.jpg /A:-D /B /S > Photos.txt""",NULL,SW_HIDE);//SW_SHOWNORMAL)  ; 
 //"/C" referme la fenetre cmd
 //"/A:-D" n'affiche pas les répertoires
 //"/B" n'affiche que le noms des fichiers
 //"/S" affiche les fichiers des sous répertoires
    return EXIT_SUCCESS;
}


mais le problème c'est que je n'ai pas exactement les noms des fichier les accents disparaissent ex "Céline" apparait comme "C,line" et "Fête" comme "F^te"
j'ai essayé de changer dans les propriétés du projet le jeu de caractère indéfini à UNICODE mais rien n'y fait
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
4 mai 2010 à 21:53
bonjour
j'ai trouvé
 ShellExecute(NULL,"open","cmd.exe","/K ""CHCP 1252 |if NOT CHCP==1252 CHCP 1252 |dir G:\\Documents\\Pictures\\*.jpg /A:-D /B /S > Photos.txt""",NULL,SW_SHOWNORMAL);


encore une petite chose comment faire pour qu'on ne voit pas du tout la fenetre de commande
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
5 mai 2010 à 00:02
Regarde la doc de ShellExecute sur MSDN.
---
VB.NET is good ... VB6 is better
0
cs_marco62118 Messages postés 176 Date d'inscription mercredi 7 avril 2004 Statut Membre Dernière intervention 1 avril 2013 1
5 mai 2010 à 22:15
bonsoir

pourquoi me dis tu
Regarde la doc de ShellExecute sur MSDN.

j'ai essayé aussi avec SW_HIDE mais on voit aussi apparaitre la fenêtre cmd, brièvement, le temps de faire le dir mais on la voit tout de m^me
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
5 mai 2010 à 22:26
Si ce n'est pas ça, il me semble qu'avec CreateProcess, tu peux préciser un handle de console et dans ton cas le mettre à NULL.
---
VB.NET is good ... VB6 is better
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 mai 2010 à 03:03
Salut,
Je pense qu'il est préférable d'utiliser les fonctions API de Windows directement au lieu de passer par cmd. C'est vrai que ce dernier via ShellExecute() te fera économiser beaucoup de lignes de code mais pour arriver exactement à ce qu'on cherche à faire il n'y a pas mieux que les APIs. Voici les fonctions à utiliser:
- CreateFile() pour créer ton fichier txt.
- FindFirstFile() pour trouver le premier fichier d'un répertoire.
- FindNextFile() pour trouver le fichier suivant.
- SetFilePointer() pour se positionner à la fin de ton fichier txt.
- WriteFile() pour écrire le nom du fichier courant dans ton fichier txt. Ne pas oublier d'ajouter "\r\n" aux noms pour les retours à la ligne.
- CloseHandle() et FindClose() pour fermer les handles quand on a fini.
Un #include <windows.h> suffit.
0
Rejoignez-nous