Script Windows, copier le contenu de sous-répertoires

Résolu
bachus666 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
 nimnesis -
Bonjour à tous,

avant toute chose je tien à préciser que je travail sous un environnement Windows 7 64bits.

Ma situation est donc la suivante, je dispose de plusieurs dossiers contenant eux même plusieurs dossiers contenant eux même des photos et des vidéos:

Dossier racine
--->Dossier1
-------->Sousdossier1
-------------------->Photos
-------------------->Photos
--->Dossier2
-------->Sousdossier2
-------------------->Photos
-------------------->Sousdossier3
-------------------------->Vidéos

Mon objectif serai-donc de lancer un script depuis la racine afin de "remonter" toutes les photos et les vidéos dans le dossier racine soit via une boucle récursive soit directement via une commande qui copierai exclusivement les fichiers .jpeg et .mp4 (ou autre).
Par la suite j'envisagerai aussi une option permettant la suppression des dossiers vides.

Dossier racine
--->Photos
--->Photos
--->Vidéos

J'aimerai donc savoir si vous auriez des idées de langage ou de solution pour pouvoir arrivé à se résultat, mieux si certain se sont déjà penchés sur la question, m'apporter leurs expériences.

Merci d'avance de vos réponses.
A voir également:

8 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
je vois.
si le nom existe dans %racine% on copie le fichier en ajoutant un nombre aléatoire dans le nom
@echo off
set racine=dir
for /R %racine% %%a in (*.jpeg *.mp4) do (
	set nom=%%~nxa
   	if exist "%racine%\%nom%"
		copy "%%a" "%racine%\%%~na%RANDOM%%%~xa"
	else
  		copy "%%a" "%racine%")
1
bachus666 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai une erreur de syntaxe apparemment
j'ai pas totalement compris malgré mes recherches ce que renvoi %%~nxa et comme je ne peu pas faire un echo :(
en tous cas merci de passer du temps à m'aider je sens qu'on touche au but mais je ne vois pas d'où peu provenir l'erreur j'ai eu beau tester quelques changement rien n'y fait.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
%%~nxa retourne le nom du fichier sans le chemin (help for)
mon code est faux, essayer
@echo off  
set racine=dir  
for /R %racine% %%a in (*.jpeg *.mp4) do (  
    if exist "%racine%\%%~nxa" (  
  copy "%%a" "%racine%\%%~na%RANDOM%%%~xa"  
 ) else (  
    copy "%%a" "%racine%"  
 )  
)  
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
enlever le echo pour effectuer la copie, sinon il ne fait qu'afficher
@echo off  
set racine=dir  
for /R %racine% %%a in (*.jpeg *.mp4) do echo copy "%%a" "%racine"
0
bachus666 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Je vais tester ça merci
0
bachus666 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Edit : ton code marche bien seulement j'aimerai maintenant pouvoir gérer les fichiers qui portent le même nom (j'ai déjà regardé dans les options de copy et Xcopy mais je n'ai rien trouver de concluant)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
ecraser les fichiers qui ont le même nom ou les renommer ?
0
bachus666 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
les renommer quitte à ce que ça soit fait avant la copie, le nom n'a pas d'importance
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
je n'ai pas testé
@echo off  
set racine=dir  
for /R %racine% %%a in (*.jpeg *.mp4) do (
   if exist "%racine%\%%a" ren "%racine%\%%a" "%racine%\%%~na%RANDOM%.%%~xa"
  copy "%%a" "%racine%")
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bachus666 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ton code malheureusement je n'arrive toujours pas à ce que je souhaite,le changement de nom ne s'effectue pas, peu être faudrait-il intervenir sur les noms avant la copie car dans mon cas je copie les fichiers dans un niveau supérieur de l'arborescence d'où se trouve mon script et toi tu utilise un seul chemin pour tous c'est là ou je ne comprend pas ta démarche ?!

%racine%\%%a signifie que si dans le dossier où j'envoie mes photos y a déjà une photo du même nom elle est renommer avec la fonction random.

Concrètement pour le moment mon deuxième dossier de photo est bien copier là ou je le souhaite mais il écrase les premiers photos et aucun renommage n'a lieu.

Un premier dossier
-->Mon dossier photo (où je souhaite mettre mes photos)
--------->script
--------->dossier de photo en vrac
--------------->dossier de photos1
--------------->dossier de photos2

Après le script
Un premier dossier
-->Mon dossier photo (où je souhaite mettre mes photos)
Photo1
Photo2
Photo3
Photo100
(ensuite j'ai un message me demandant si je souhaite remplacer le fichier photo1 car elle porte le même nom qu'un fichier déjà existant)
--------->script
--------->dossier de photo en vrac
--------------->dossier de photos1
--------------->dossier de photos2
0
bachus666 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Merci ça a fonctionner comme sur des roulettes :)
0
djnenex
 
bonjour, désolé pour le déterrage de topic mais je cherche a faire la meme chose, >bachus, pourriez-vous me donner le code final ce qui fonctionne pour vous.

par avance merci.
0
nimnesis
 
Bonjour,

Je souhaiterai exactement faire l'inverse :)
C'est à dire que j'ai un répertoire racine qui contient :

Dossier-Racine :
fichier (1).txt
fichier (1).nfo
fichier (1).tbn
fichier (1).jpg
fichier (2).txt
fichier (2).nfo
fichier (2).tbn
fichier (2).jpg
fichier (3).txt
fichier (3).nfo
fichier (3).tbn
fichier (3).jpg

et je souhaiterai avoir :

Dossier-Racine :
--> Dossier (1) :
fichier (1).txt
fichier (1).nfo
fichier (1).tbn
fichier (1).jpg
--> Dossier (2) :
fichier (2).txt
fichier (2).nfo
fichier (2).tbn
fichier (2).jpg
--> Dossier (3) :
fichier (3).txt
fichier (3).nfo
fichier (3).tbn
fichier (3).jpg
0