Tronqueur de nom de fichier (pour les baladeurs) [vc++ 6]

Description

Ce Programme sert a tronquer les noms de fichiers pour les baladeurs ou les maniaques du rangement qui supporte pas les noms longs. En effet, les baladeurs mp3 on un petit écran, et a chaque chanson on doit attendre de voir defiler le nom du groupe alors qu'on le connais parfaitement (;-).

Je met la source en niveau initié car les api et windows sont pas tjs tres simple, bien que j'ai fais l'effort d'expliquer dans des commentaires et tout, donc elle a bien un but pédagogique, je n'explique par contre pas les commandes car MSDN est super pour ça.

Source / Exemple :


//Je ne place ici que la fonction de recherche et de renommage des fichiers

//Recupere ce qui est dans le prefixe et y rajoute le *.*
				handle = GetDlgItem(hwnd,IDC_PREFIX);
				LenP=GetWindowTextLength(handle)+1;
				Prefixe=new char[LenP+1];
				GetWindowText(handle,Prefixe,LenP);
				
				Search=new char[LenP+3+1]; //= ce qui est contenu dans l'editbox + le \0 (ex: Nightwish-*\0)
				sprintf(Search,"%s*.*",Prefixe);
				
				//Recupere le Path du repertoire choisis et le selectionne
				handle = GetDlgItem(hwnd,IDC_EPATH);
				LenPath=GetWindowTextLength(handle)+1;
				Path=new char[LenPath+1];
				GetWindowText(handle,Path,LenPath);
				if(strcmp(Path,"")==0)
				{
					MessageBox(hwnd,"Vous devez selectionner un dossier avant de lancer le renommage !","Erreur",MB_ICONWARNING);
					return 0;
				}
				SetCurrentDirectory(Path);

				//Lance la Recherche
				HSearch=FindFirstFile(Search,&Info);
				if(HSearch!=INVALID_HANDLE_VALUE)
				{
					do
					{
						if(strcmp(Info.cFileName,".")!=0 && strcmp(Info.cFileName,"..")!=0) //Si c'est autre chose que ".." ou "."
						{
							NewName=new char[strlen(Info.cFileName)-LenP+1];
							
							//Recupere le nom de fichier sans le prefixe
							for(unsigned int i=0;i <= strlen(Info.cFileName)-LenP;i++)
							{
								NewName[i]=Info.cFileName[i+LenP-1];
							}
							NewName[strlen(Info.cFileName)-LenP+1]='\0';

							//Renomme
							if(rename(Info.cFileName,NewName)!=0)
							{
								ShowProg = new char[strlen(Info.cFileName)+113+1];
								sprintf(ShowProg,"Le Fichier %s n'a pus etre renommé !\nCette erreur est surrement dus au fait qu'un autre fichier porte le meme nom.",Info.cFileName);
								MessageBox(hwnd,ShowProg,"Erreur de Renommage",MB_ICONHAND);
								delete ShowProg;
							}

							NewName=new char[0]; //C'est le seul moyen que j'ai trouvé pour eviter le plantage.
							delete NewName; //en fait, delete aime pas que ma chaine se termine par \0, faites le test

							//Averti de ce qui se passe sur le label IDC_SPROGRESS
							ShowProg = new char[strlen(Info.cFileName)+30+1];
							sprintf(ShowProg,"Le fichier %s, a été renommé !!",Info.cFileName);

							handle = GetDlgItem(hwnd,IDC_SPROGRESS);
							SetWindowText(handle,ShowProg);
							delete ShowProg;
						}
					}while(FindNextFile(HSearch,&Info)!=NULL); //Et recommence tans qu'il y a des fichiers a rennomer
					
					//Dis que c'est FINI !
					handle = GetDlgItem(hwnd,IDC_SPROGRESS);
					SetWindowText(handle,"Tout les fichiers on bien été renommés !");
				}
				else
				{
					//Dis que c'est FINI !
					handle = GetDlgItem(hwnd,IDC_SPROGRESS);
					SetWindowText(handle,"Aucun fichiers n'a été renommés !");
				}

				delete Search;
				delete Path;
				delete Prefixe;

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.