Un copy complexe [Résolu/Fermé]

Signaler
Messages postés
318
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
22 février 2013
-
Messages postés
318
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
22 février 2013
-
Bonjour,


J'ai besoin de faire un batch qui copie tous les fichiers d'un répertoire ainsi que les fichiers contenue dans les sous répertoire.

Jusque là, c'est simple. Le plus compliqué c'est qu'en sortie, il doit y'avoir qu'un seul et même répertoire avec tous les fichiers dedans non trié.

Quelqu'un a une idée?

Si une commande qui permet de fussionner tous les dosser en un seul...

Merci d'avance.

Bien cordialement.

7 réponses

Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
hello
dans un .bat, remplacer %a par %%a
for /F "delims=" %a in ('dir /S /B') DO @copy /y "%a" \dest
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 296
salut.
En bash, ça serait hyper vite fait...
Première piste, avec la commande "dir /S /B" tu récupères une liste de tout les fichiers à copier.

Sinon, en lisant l'aide de for, j'ai peut être une idée, essai un truc dans le genre :
for /R repertoire/racine/a/copier %file in (*.*) DO copy %file repertoire/de/destination

autre option, qui ne semble pas fonctionner chez moi à cause d'espace dans les noms :
for /F  %file in ('dir /S /B') DO copy %file c:\rep_dest
Messages postés
318
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
22 février 2013
29
Merci pour ta réponse.

Oui je sais bash serait tellement mieux, mais disons que dans mon travail je suis obligé de bosser sur du windows.

Je savais même pas qu'il y'avait des for sous windows.

pour l'instant ça marche pas des masses.
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 296
Salut.
je t'avoue ne pas avoir tout tester, mais partiellement, avec des echo, et ça fonctionnai pas trop mal.
à toi de voir ce qui merde, pourquoi ça ne fonctionne pas. Le for /R semble plus prometteur.

Sinon, il est possible d'utiliser bash sous windows en installant "Msys".
en batch, il y a une espèce d'équivalent à "man", c'est "help" et l'équivalent de --help c'est "/?".
Par exemple, tu peuxtaper "help for" ou "for /?" pour avoir accès à l'aide en ligne.
Messages postés
318
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
22 février 2013
29
Merci dubcek.

Mais je comprends pas à quoi correspond %a%?

ainsi que /dest?

Je suppose que l'un est le répertoire source et l'autre le répertoire de destination mais j'en suis pas sur...
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
%a est une variable à laquelle for va assigner chaque nom de fichier trouvé par dir /b /s et on copie ce fichier dans la destination, il faut remplacer \dest par la vraie destination
Messages postés
318
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
22 février 2013
29
en faite ça créé un fichier "dest" en mettant tout dedans.

Alors que je veux que ça le range dans un dossier :/
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 296
\dest\ ?
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
il faut créer le répertoire \dest avant la copie md \dest
Messages postés
318
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
22 février 2013
29
Ca marche. En fait il se met par défaut sur le répertoire racine.

Autre problème, la ligne marche mais quand seulement quand je le met dans un invite de comande.

Quand je batch:

for /F "delims=" %a% in ('dir /S /B') DO @copy /y "%a%" \replotus\id\
pause

Rien ne se passe et la fenetre se ferme direct sans s'arrêter sur pause. On dirait que le programme sort avant la fin.

Quelqu'un sait pourquoi?
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 296
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 324
%%a et pas %a%
Messages postés
318
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
22 février 2013
29
merci les gars. Ca marche.

Je suis un peu lent à la détente. :)