Renommer les dossiers et sous dossiers

Bonjour à tous et toutes

Je viens vous demander de l'aide car je n'arrive pas à réaliser le script dont j'ai besoin.

J'ai dans un répertoire "Photos" plusieurs dossiers qui ont eux aussi des sous dossiers.
Je cherche le moyen de renommer tous les dossiers et sous dossiers.

J'ai déjà fait le code qui permet de récupérer la liste des dossiers avec leur chemin.
Le voici
for /f "delims=" %%a In ('dir /b/ad/s  "C:\Users\Desktop\Photos" ') Do (
		echo %%a >>Dossiers.txt
)


Pour le contenu de la liste c'est ok.
Le nom de mes dossiers, pour l'instant, sont de cette forme 2015 02 02 - evenement
Je voudrais ne garder que la partie 2015 02 02

Il me semble que pour renommer les dossiers il faut utiliser la commande ren.
Je n'arrive pas à trouver comment faire pour n'avoir que la partie date autrement que de renommer les doossiers un par un.

Si possible, il faudrait que je puisse avoir un script qui, pour chaque dossier présent dans Dossiers.txt le renommer correctement.

Si vus pouvez me donner des conseils, ou des suggestions, ça serait sympa.
Merci d'avance

2 réponses

  1. Contributeur
    hello
    montre quelques lignes de Dossiers.txt
    0
    1. Hello dubcek

      voilà quelques lignes de Dossiers.txt comme tu me l'a demandé
      C:\Users\Desktop\Photos
      C:\Users\Desktop\Photos\2013
      C:\Users\Desktop\Photos\2013\2013 05 - Amis
      C:\Users\Desktop\Photos\2013\2013 07  vacances
      C:\Users\Desktop\Photos\2013\2013 09 - Anniversaire


      J'ai plus de 200 dossiers à renommer
      0
    2. Contributeur
      ils commencent tous par AAAA MM
      ou comme au poste 1 il y a des AAAA MM JJ
      l'idée est de garder les x premiers caractères
      0
  2. Contributeur
    essayer ca
    il ne fait qu'afficher les commandes
    si c'est ok, enlever le echo devant ren
    @echo off
    setlocal enableDelayedExpansion
    for /f "delims=" %%a in ('type dossiers.txt') do (
    set n=%%a
    set nn=%%~na
    echo %%~na | findstr /R /C:"[0-9][0-9][0-9][0-9] [0-9][0-9] [0-9]" > NUL
    if !errorlevel! EQU 0 (set nn=!nn:~0,10!& echo ren "%%~pna" "%%~pa!nn!")
    echo %%~na | findstr /R /C:"[0-9][0-9][0-9][0-9] [0-9][0-9] [^0-9]" > NUL
    if !errorlevel! EQU 0 (set nn=!nn:~0,7!& echo ren "%%~pna" "%%~pa!nn!")
    )
    0
    1. Je vais tester le code et je t tiens au courant.
      Merci
      0
    2. @DelNCJ'ai testé mais il n'y a pas de modification.

      Je continue de chercher de mon côté.
      Si je trouve quelque chose je mettrai un message.

      @+
      0
    3. Contributeur
      si c'est ok, enlever le echo devant ren
      ... echo ren "%%~pna" ...
      0
    4. @dubcekC'est que ce j'ai fait, mais si je relance après le script
      for /f "delims=" %%a In ('dir /b/ad/s  "C:\Users\Desktop\Photos" ') Do (
      		echo %%a >>Dossiers.txt
      )


      j'aile même résultat
      0
    5. Contributeur
      les fichiers ne sont pas renomés et il n'y a pas d'erreur ?
      0