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

Résolu
bachus666 Messages postés 7 Statut Membre -  
 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.

8 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
    1. bachus666 Messages postés 7 Statut Membre
       
      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
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      %%~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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  3. bachus666 Messages postés 7 Statut Membre
     
    Je vais tester ça merci
    0
    1. bachus666 Messages postés 7 Statut Membre
       
      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
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      ecraser les fichiers qui ont le même nom ou les renommer ?
      0
    3. bachus666 Messages postés 7 Statut Membre
       
      les renommer quitte à ce que ça soit fait avant la copie, le nom n'a pas d'importance
      0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bachus666 Messages postés 7 Statut Membre
     
    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
  7. bachus666 Messages postés 7 Statut Membre
     
    Merci ça a fonctionner comme sur des roulettes :)
    0
  8. 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
  9. 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