Formater un disque amovible

[Résolu]
Signaler
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008
-
 BruNews -
Bonjour,
Je bosse en ce moment sur un programme.
Il me faut, par ce programme formater un disque externe (la variable du disque est demandée) pour y installer des fichiers.
Y a t il une fontion qui le permet ?
Merci
A bientot

Cordialement.
The HazKaaL

24 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Salut,
Un simple system("format x:") x étant la lettre du lecteur, ne suffirait pas ?

Shell
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Ah oui !
Merci c'est parfait :D

Cordialement.
The HazKaaL

Pour Ceux qui bossent un TPE sur les virus et qui auraient besoin d'aide, j'ai commencé un site.
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Oops désolé pour le double post...
Mes Copy files ne fontionnent pas..Comment faire pour copier un fichier d'un répertoire à l'autre en déclarant une fonction précédemment ???

MERCI

Cordialement.
The HazKaaL
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Encore désolé pour le double post...
Probleme avec cette fonction : system("format %s:", &usb);
Il faut que je rajoute une librairie... Mais laquelle ???

Cordialement.
The HazKaaL
Messages postés
65
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
21 octobre 2009

system est une fonction des libraries standart du C : stdlib.h.
system("format :%s",&usb); tu envoie un pointeur vers un pointeur car tu utilise une chaine de caractère '%s', si tu envoie un seul caractére c'est '%c'.
J'espére avoir été utilie, Bye.
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
system n'est pas printf ! le formatage de variables n'y est pas possible !

char szCmd[50];
sprintf(szCmd,"format %c:",&usb);
system(szCmd);

Jean-François
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Bonjour J-François et merci de ton aide !
Je suis arrivé à formatter mon D.Amovible !!!
Mais maintenant je doit faire que le programme copie des ficheirs d'un dossier à ce disque amivble.
J'ai créé une fontion de CopyFiles d'un répertoir à un autre mais ça ne fontionne pas -.-" ...

Help ?

Merci encore

Cordialement.
The HazKaaL
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
Commande du même genre !

char szCmd[MAX_PATH + 20]; // pour être sûr que tout tienne !
sprintf(szCmd,"xcopy %s\\*.* %c: /S/E",repSource,&usb);
system(szCmd);

Avec le nom du répertoire d'origine dans repSource.

 Voir les paramètres de xcopy pour être plus précis (/S/E : copie les sous-répertoires y compris s'ils sont vides).
Jean-François
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Ah oui je comprends,
Je n'avais pas du tout vu ça comme ça. J'avais créé une fonction void et je prenais les fichiers un par un
Bien vu !!!
Merci à toi J-François

Cordialement.
The HazKaaL
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
Il est possible aussi de faire une boucle FindFirstFile()/FindNextFile() avec un CopyFile() dedans, mais s'il y a des sous-répertoires ça se complique ! par contre on peut visualiser l'avancement de la copie des fichiers.

Jean-François
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Ah... y'à un probleme à la compilation sur char szCmd[MAX_PATH + 20];
Faut il que je déclare la variable MAX_PATH ? si oui comment ?
MERCI

Cordialement.
The HazKaaL
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
Cest _MAX_PATH, déclaré dans stdlib.h et c'est une constante qui correspond tout simplement à la longueur maximale d'un chemin d'accès.

Jean-François
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Ca marche sauf que :
 char szCmd2[_MAX_PATH + 20];
 sprintf(szCmd2,"xcopy %c\\fichier.extension %s: /S/E","C:\\Documents and Settings\\maison\\Bureau\\MS",&usb); 
 system(szCmd2);

Il me dit que le fichier est introuvable...

Cordialement.
The HazKaaL
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

A quoi correspond : /S/E ...???

Cordialement.
The HazKaaL
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
char szCmd2[_MAX_PATH + 20];
sprintf(szCmd2,"xcopy %c\\fichier.extension %s: /S/E","C:\\Documents and Settings\\maison\\Bureau\\MS",&usb); 
system(szCmd2);






1) Il manque de : entre l'unité et \\
2) Il cherche à copier le fichier MS  ou le contenu du répertoire MS ? si c'est le cas il faut ajouter \\*.*
3) Les 2 variables sont inversées ! il faut placer &usb avant "C:\\Documents..." : &usb est la lettre qui remplacera le %c et "C:\Documents..." est la chaîne qui remplacera %s

char szCmd2[_MAX_PATH + 20];
sprintf(szCmd2,"xcopy %c:\\fichier.extension %s: /S/E",&usb,"C:\\Documents and Settings\\maison\\Bureau\\MS
\\*.*"); 
system(szCmd2);

Jean-François
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
La commande xcopy a de nombreux paramètres dont :
/S qui copie aussi les sous-répertoires (S subdirectories sous-répertoires)/E qui créée les sous-répertoires même s'ils sont vides (E Empty vide)

Jean-François
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Non c'est bien le contenue du répertoire MS que je veux copier
Ah oui... iles manquait le " : "

MERCI beacoup pour le temps qui tu as dépensé pour m'aider
A bientôt !!!
Ca devrait marcher maintenant.
Cordialement.
The HazKaaL
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009
1
Si c'est le répertoire alors il faut ...\\MS\\*.* pour qu'il prenne bien tous les fichiers !

Pas de problème pour aider quand on connaît !

Jean-François
Messages postés
67
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
4 novembre 2008

Désolé mais j'ai encore un probleme...

  char szCmd2[_MAX_PATH + 20];
  sprintf(szCmd2, "xcopy %s:\\ %c /S/E", &usb, "C:\\MS\\*.*");
  system(szCmd2);

Le programme fait tout correctement à la copilation, le répertoire existe et il y a des fichiers dedans.
Mais au moment de les copier il me dit :  0 fichiers copiés

Quelle est la solution ?

Cordialement.
The HazKaaL
Messages postés
65
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
21 octobre 2009

As tu déjà utiliser sprintf() :
char buf[_MAX_PATH+20];
sprintf(buf,"xcopy %c:\\ %s /S/E",&usb,"C:\\MS\\*.*");
system(buf);
Voilà, le probleme est que tu voulais mettre un carctére comme chaine et une chaine comme caractére, du moins je pense que c'est cette erreur.
Bye