COPIER UN RÉPERTOIRE ET TOUT CE QU'IL CONTIENT

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 31 août 2005 à 16:48
bmsalah Messages postés 5 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 25 août 2010 - 3 août 2010 à 14:25
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33553-copier-un-repertoire-et-tout-ce-qu-il-contient

bmsalah Messages postés 5 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 25 août 2010
3 août 2010 à 14:25
salut tous le monde,
j'ai besoin une methode ou un programme
Pour déterminer la taille de la copie d'un fichier vers le flash disque. voila mon Email: Bmsalah@gmail.com
et merci à tous
darakk Messages postés 3 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 29 juillet 2009
29 juil. 2009 à 19:01
Très bon script, mais je cherche à nommer le répertoire de destination avant qu'il copie le contenue du répertoire source dedans. l'intérêt est de pouvoir tout faire dans 1 seul répertoire plutôt que de devoir avoir la copie dans un autre répertoire.
evitez de me cité la fonction rename(), elle n'est pas adéquate dans mon cas de figure.
soundpanther Messages postés 68 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 31 janvier 2009
18 oct. 2008 à 16:20
Bonjour,

3 réponses sur d'autres forums, il sont rendu le code 3 fois plus rapide

Problème résolut merci quand même.

Cordialement,
soundpanther Messages postés 68 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 31 janvier 2009
18 oct. 2008 à 11:33
Bonjour,

je suis arriver a modifier cette ligne par celle ci mais je n'arrive pas encore pour les sous-répertoire
copy ($fichier, $destination.'/'.basename ($rep).'/'.basename ($fichier));
copy ($fichier, $destination.'/'.basename ($fichier));

Merci d'avance
soundpanther Messages postés 68 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 31 janvier 2009
18 oct. 2008 à 08:45
Bonjour,

il est super votre script,

comment copier le contenue d'un répertoire juste son contenue. ?

copier_rep ('doss1', 'doss2');

je voudrais que doss1 doss1/*.* contenue de doss2
est non doss1 doss1/doss2/*.* contenue de doss2

Merci d'avance
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 août 2008 à 13:16
tu peux tester...
g_fuck Messages postés 269 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 23 août 2011
4 août 2008 à 08:52
thanx coucou! donc si je le copie via php (via mon site donc) tout le monde qui aura acces a ce site pourra avoir acces a ce dossier ?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 août 2008 à 21:30
tu peux tester...

(non, il prend l'uid de celui qui copie)
g_fuck Messages postés 269 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 23 août 2011
3 août 2008 à 21:27
ma qustion est si en copiant un repertoir on copy aussi sont UID?
merci!
doudje Messages postés 4 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 12 janvier 2011
14 mars 2008 à 18:42
Un joli code de côté de résultat, mais côté code source c'est un peu plus bourré pour un simple copier/coller de répertoire.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
24 juil. 2007 à 14:03
Merci :-)

rename() c'est encore le plus simple.
Jeystrash Messages postés 1 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 24 juillet 2007
24 juil. 2007 à 13:07
Super script !
Mais comment fait on si on veut que le repertoire de destination porte un autre nom ?
Merci !!
pssinjaune Messages postés 39 Date d'inscription jeudi 2 mars 2006 Statut Membre Dernière intervention 22 septembre 2007
18 nov. 2006 à 03:31
J'ai bien failli attraper une crise de nerfs ....
Je fesais un test sur le resultat de la copie qui est censé renvoyé true ou false:
"Renvoie true en cas de succès, false sinon." C'est ce que tu as ecrit j'invente rien.

Apres avoir galere une heure au moins a essayer de faire marcher la suite de mon code qui dépendait du succés de la copie (censé renvoyé true ...) et bien je me suis apercu que ca renvoyé que dalle et que c'est cause de ca que ca foiré!

Bien joué pour ta fonction qui est bien utile mais tu mérite néanmoins une calbote pour le "Renvoie true en cas de succès, false sinon." ^^...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 nov. 2005 à 16:18
Bah vouai, ça existe :
http://fr2.php.net/language.types.type-juggling

C'est bon à savoir ça! J'ai pas encore testé dans cette fonction mais y a pas de raison que ça ne marche pas lol.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 nov. 2005 à 16:13
ça me fait penser à du java ^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 nov. 2005 à 16:10
Ah tien, je ne savais pas ça...m'en vais jeter un oeil, merci :-)
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
10 nov. 2005 à 16:01
"# if (!is_array ($reps)) {
# $reps = array ($reps);
# }"
Tu peux forcer le type au début de ta fonction :

"function copier_rep ($destination, (array) $reps, $tableau_dir = array ()) { //"

Mais je crois que c'est spécifique à PHP5 par contre.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 nov. 2005 à 11:37
Je t'en prie, merci d'avoir relevé ce gros bug :-)
ben53000 Messages postés 5 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 24 février 2006
10 nov. 2005 à 11:11
ok, là c'est hyper good, ça marche nikel, bravo pour le code et la rapidité.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 nov. 2005 à 10:06
Voilà corrigé...mais à la va très vite ;-) J'optimiserai plus tard, là j'ai pas mal de taf malheureusement.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 nov. 2005 à 09:15
Il a raison, je viens de retester :-)

Pas grave, je modifierai ça dans la journée, c'est une erreur de "modification" (en fait cette fonction est extraite de la méthode d'une classe que j'ai développé pour mon explorateur php, et en effectuant la conversion méthode => fonction, j'ai dû faire unr petite bourde).
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 nov. 2005 à 19:31
Salut,

il aurait été bien de donner la structure de ce que t'as copié pour aider Malalam a résoudre les problèmes de ce script...
ben53000 Messages postés 5 Date d'inscription lundi 23 mai 2005 Statut Membre Dernière intervention 24 février 2006
9 nov. 2005 à 19:22
mouai pas terrible je viens de le tester ce code avec un repertoire contenant plusieurs dossiers avec plusieurs fichiers et j'ai été déçu.
Je me suis rendu compte que tous les fichiers étaient mis dans tous les dossiers peut importe s'il était bien a l'origine dans celui ci.
Il y a certaines choses à revoir.
Saluté
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 sept. 2005 à 12:23
Mictif => ahem...

Sans vérification, mais bien plus court ;-) :

<?php
function deplacer_ ($destination, $source) { // methode pour deplacer fichier ou repertoire
$destTemp =$destination. '/'.basename ($source);
if (!file_exists ($destTemp)) {
rename ($source, $destTemp);
}
}

deplacer_ ('bli', 'bla/exemples');
?>
mictif Messages postés 105 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 14 février 2013 2
8 sept. 2005 à 12:02
function deplace_dir($source,$destination){
if (!is_dir($destination)){
mkdir($destination,0777);
}
$dossier=opendir($source);

while (false != = ($fichier = readdir($dossier))) {// attention a la version de php pour le "!= ="
$l = array('.', '..');
if (!in_array( $fichier, $l)){
if (is_dir($source."/".$fichier)){
deplace_dir($source."/".$fichier, $destination."/".$fichier);
}
else{
copy ($source."/".$fichier, $destination."/".$fichier);
unlink($source."/".$fichier);
}
}
}
@closedir($dossier);
rmdir($source);
}

voila :)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 sept. 2005 à 10:13
Exact.
D'un autre côté, si je teste le false, je risque d'avoir des résultats inattendus avec Windows. Cf la doc de copy : copy () renverra false sous Windows si on tente de copier un fichier dont la taille est nulle, MAIS le fichier sera néanmoins correctement copié.
Ce que je pourrais faire est tester l'existence du 2ème fichier (la copie) après, éventuellement... ce n'est pas une mauvaise idée.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 sept. 2005 à 20:42
à la ligne 28, tu ne vérifie pas si tu as les droits de copier le fichier (si copy renvoi true ou false...)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
1 sept. 2005 à 09:53
mdr j'avais pas vu, ouais en effet ^^
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 sept. 2005 à 09:08
Voui lol, c'est parce que je n'avais pas pensé à contourner de cette manière...là je dis : si le 2d paramètre n'est pas un tableau...transforme le en tableau, lol. Je triche un peu quoi...

Mais bon oui la flemme du développeur est une maladie bien connue lol ;-)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 août 2005 à 17:14
Bah tu vois c'était pas si long que ça à corriger (comme mon quiz sur mon site qui ne gérait pas les niveaux, je l'ai refait ça m'a pris une demi heure max mais bon j'avais la flemme de le faire mdr)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 août 2005 à 17:12
Voila c'est corrigé lol.
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
31 août 2005 à 17:03
Merci :-)

D'accord pour cs...c'est chiant lol, c'est moche comme code, presque à tous les coups.

Pour le tableau...ouais lol. mais je crois que je vais modifier ça...c'est vraiment pas top comme appel du coup.
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 août 2005 à 16:48
Salut Malalam :-)

dommage pour l'array en second paramètre, mais sinon c'est propre (dommage que phpcs ne conserve pas les styles... c'est lourd)