[Batch] Déplacement massif de fichiers

Déplacement massif de fichiers [Batch] - Shell/Batch - Programmation

Marsh Posté le 20-12-2010 à 19:22:50    

Bonjour à tous,
 
Je fait face à un petit problème de script... J'ai dans un répertoire, plein de dossiers contenant chacun un seul fichier. J'aimerai que ces fichiers se retrouvent tous à la racine de ce répertoire plutôt que dans des sous répertoires.
Pour plus de facilité j'ai réussi avec ant renamer à renommer tous mes dossiers de manière uniforme : dossier_1 ... dossier_n.
 
Mais pour le batch parcourant mes dossiers et déplaçant le fichier qu'ils contiennent dans le répertoire parent, je sèche...
J'ai fait quelques recherches google mais je n'arrive pas à écrire un .bat qui fait ce travail.
 
Je me doute bien que c'est tout pourri : avec une variable. L'initialiser à 1. Faire une boucle de 1 à n et à chaque tour de boucle faire un move ".\dossier_"valeur de ma variable"\*.*" vers ".\"
 
Un p'tit coup de main ? :)
 
Merci d'avance.


---------------
A.K.A. Korrozyf
Reply

Marsh Posté le 20-12-2010 à 19:22:50   

Reply

Marsh Posté le 20-12-2010 à 19:24:02    

Ce sujet a été déplacé de la catégorie OS Alternatifs vers la categorie Programmation par O'gure


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 20-12-2010 à 19:28:00    

find . -type f -exec mv {} MON_DIRECTORY_PR2F2R2 \;

Reply

Marsh Posté le 20-12-2010 à 19:44:03    

Ah tiens, c'est drôle, le find n'est pas construit en une fois, et ça va chopper aussi les fichiers que tu viendras de déplacer.

 

Suffit donc de préciser de ne pas tenir compte des fichiers du répertoire courant :
find ./*/ -type f -exec mv {} MON_DIRECTORY_PR2F2R2 \;


Message édité par erulio le 20-12-2010 à 19:44:14
Reply

Marsh Posté le 20-12-2010 à 21:30:57    

o'gure : désolé pour le mauvais placement de topic. :jap:
 
erulio : à la lecture, la commande que tu me proposes ressemble à une commande linux non ? Tu aurais l'équivalent sur windows ? :)


---------------
A.K.A. Korrozyf
Reply

Marsh Posté le 20-12-2010 à 22:21:58    

C'est du Unix, mais comme tu venais de OSA, je croyais pouvoir t'aider.
Et non, je n'y connais rien en Windows.

Reply

Marsh Posté le 21-12-2010 à 16:04:25    

Pour parcourir tous les répertoires :
 
REp="xxxxxxxxxxxxxxxxx"
 
cd /d %REP%
for /f %i in ('dir /b /ad %REP%') do @echo %%i
 
après remplacer le echo par ce que tu veut.


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Marsh Posté le 22-12-2010 à 09:55:33    

Salut.

 

Je viens de tester mais ça ne marche pas. :(

 

Je suis dans un répertoire nommé "Patchs" qui contient des sous répertoires nommés "directory_10" à "directory_150".
Chacun de ces sous répertoires contient 1 patch (fichier .exe).

 

Je suis en train de me faire un CD d'installation de windows XP avec toutes les mises à jours déjà installées dedans. Mais le problème est que nLite demande d'avoir tous les fichiers de patchs dans le même répertoire sans sous répertoires donc il faudrait que je déplace les 150 fichiers de leur sous répertoires respectifs à ce répertoire "Patchs" racine.

 

Le mieux que je fasse c'est ça :
@echo off
set i=10
:startfor
set /a i=i+1
move .\directory_"%i%"\*.exe .\
if %i% LSS 150 goto startfor

 

mais ça ne marche pas... :/

 

Edit : mon batch est à la racine du répertoire Patchs

 

Edit 2 : J'ai trouvé ! Il ne me manquait que les "" autour de mon %i% !
Merci pour vos réponses.

 


Message édité par Cougy le 22-12-2010 à 10:24:41

---------------
A.K.A. Korrozyf
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed