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

Résolu/Fermé
bachus666 Messages postés 7 Date d'inscription mercredi 3 octobre 2012 Statut Membre Dernière intervention 4 octobre 2012 - Modifié par bachus666 le 3/10/2012 à 13:41
 nimnesis - 20 avril 2013 à 13:58
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 oct. 2012 à 15:04
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 mercredi 3 octobre 2012 Statut Membre Dernière intervention 4 octobre 2012
4 oct. 2012 à 15:23
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 4/10/2012 à 15:30
%%~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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 3/10/2012 à 15:28
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 mercredi 3 octobre 2012 Statut Membre Dernière intervention 4 octobre 2012
3 oct. 2012 à 15:30
Je vais tester ça merci
0
bachus666 Messages postés 7 Date d'inscription mercredi 3 octobre 2012 Statut Membre Dernière intervention 4 octobre 2012
3 oct. 2012 à 17:22
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 oct. 2012 à 08:23
ecraser les fichiers qui ont le même nom ou les renommer ?
0
bachus666 Messages postés 7 Date d'inscription mercredi 3 octobre 2012 Statut Membre Dernière intervention 4 octobre 2012
4 oct. 2012 à 11:04
les renommer quitte à ce que ça soit fait avant la copie, le nom n'a pas d'importance
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 oct. 2012 à 11:25
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 mercredi 3 octobre 2012 Statut Membre Dernière intervention 4 octobre 2012
4 oct. 2012 à 13:30
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 mercredi 3 octobre 2012 Statut Membre Dernière intervention 4 octobre 2012
4 oct. 2012 à 16:15
Merci ça a fonctionner comme sur des roulettes :)
0
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
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