Batch de move récursif

ViPHP
ViPHP | 5462 Messages

16 août 2011, 13:49

Salut,

Je ne te suis pas...

Mega
;)

le but c'est bien de déplacer un dossier vers une autre destination ? donc un coupé collé, donc un rename

Administrateur PHPfrance
Administrateur PHPfrance | 11405 Messages

16 août 2011, 14:43

le but c'est bien de déplacer un dossier vers une autre destination ? donc un coupé collé, donc un rename
Non. :non:
Déplacer tous les contenus d'une arborescence complexe dans un seul et même dossier de destination.

ViPHP
ViPHP | 5462 Messages

16 août 2011, 15:05

le but c'est bien de déplacer un dossier vers une autre destination ? donc un coupé collé, donc un rename
Non. :non:
Déplacer tous les contenus d'une arborescence complexe dans un seul et même dossier de destination.
comprend pas

par exemple j'ai une un arbo type :
 - mon dossier
    - fichier1
    - fichier2
    - sous dossier
        - fichier3
        - fichier4
le script a la fin il sert a faire ?:
 - un autre dossier
    - fichier1
    - fichier2
    - sous dossier
        - fichier3
        - fichier4
ou ce que je comprend a travers ta phrase
 - un autre dossier
    - fichier1
    - fichier2
    - fichier3
    - fichier4

Mammouth du PHP | 736 Messages

17 août 2011, 15:17

Salut,

Oui tous les dossiers et sous dossiers doivent arriver au même niveau dans un nouveau répertoire. Tu ne tiens pas compte de l'arbo actuelle, chaque dossier est coupé puis collé dans un dossier racine.

Ca marche plutôt pas mal sauf que lorsque je coupe un dossier parent, je n'ai pas le temps de couper les dossiers enfants et je reproduis au final la même arbo.

Il faudrait presque descendre au dernier point puis remonter à la racine (et encore pas sur) ou bien faire ce que j'ai dit : un tri sur la longueur de la chaine car on est sur que les dossiers les plus enfouis seront traités en premier jusqu'aux dossiers les plus récents car je reprends comme chaine le chemin ;)

Par contre le sort, asort, ksort, rsort... ne me sont d'aucune utilité car je ne veux pas trier sur l'indice ou par ordre alphabétique mais bien sur la taille de la chaine.

usort (si je dis pas de bêtise) peut le faire ?

Mega
;)
Dyslexics are teople poo

ViPHP
ViPHP | 5462 Messages

17 août 2011, 15:47

Oki donc le dernier code

mais c'est pareil rename suffit
$source = __DIR__;
$dest   = 'temp';

$dir = new RecursiveDirectoryIterator($source);
$it  = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST);

foreach($it as $file)
{
    if($file->isFile())
    {
        rename($file, "$dest/{$file->getFilename()}");
    }
}

Mammouth du PHP | 736 Messages

16 sept. 2011, 16:45

Re stealth,

Merci, je reviens sur cette contribution.

Ca semble ok pour les fichiers mais pour déplacer dossiers parents tout en gardant l'arbo, ça ne semble pas fonctionner.

Mega
;)
Dyslexics are teople poo