81 votes

Existe-t-il un moyen de renommer les fichiers en minuscules par lots ?

J'ai besoin d'un moyen de renommer tous les fichiers des dossiers et sous-dossiers en minuscules.

J'aimerais savoir s'il existe un moyen de faire cela en utilisant sólo Windows (XP ou 7)

159voto

loftysnake Points 1516

Allez dans le répertoire et exécutez la commande suivante :

for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")

Voici la décomposition au cas où quelqu'un voudrait modifier/améliorer :

  • for /f - Pour chaque ligne
  • "Tokens=*" - Traitez chaque élément de chaque ligne.
  • %f in (...) - %f est le nom de votre variable pour chaque élément.
  • dir - liste tous les fichiers et sous-répertoires d'un répertoire.
  • /l - (paramètre pour dir) Utilise les minuscules.
  • /b - (paramètre pour dir) Utilise le format nu, seulement les noms de fichiers/répertoires, pas de taille, pas d'en-tête.
  • /a-d - (paramètre pour dir) Faites no liste répertoires . ( a signifie attribute , - signifie not et d signifie directory ) .
  • rename "%f" "%f" - renommer le fichier avec son propre nom, qui est en fait mis en minuscule par l'option dir et /l combinaison.

22voto

renommer spacetornado est un programme Windows qui renomme des quantités massives de fichiers par lots. Vous pouvez rechercher et remplacer du texte, supprimer un certain nombre de caractères, changer la casse en minuscule, majuscule ou première lettre capitale, et ajouter du texte au début ou à la fin (append/prepend) de chaque nom de fichier.

enter image description here

22voto

Janis Veinbergs Points 4959

Depuis Windows 7, vous pouvez utiliser PowerShell pour ces tâches

Get-ChildItem "C:\path\to\folder" -recurse | 
  Where {-Not $_.PSIsContainer} | 
  Rename-Item -NewName {$_.FullName.ToLower()}

- Choisissez votre dossier racine<br>- tous <em>fichiers </em>à l'intérieur du dossier racine et des sous-dossiers sont renommés<br>- les noms de dossiers sont exclus avec <code>Where {-Not $_.PSIsContainer} |</code><br>

10voto

dbenham Points 10555

Voici une solution de ligne de commande récursive appropriée utilisant uniquement des commandes natives cmd.exe et qui fonctionne réellement. Je pense que c'est la solution native la plus simple possible :

for /r %D in (.) do @for /f "eol=: delims=" %F in ('dir /l/b/a-d "%D"') do @ren "%D\%F" "%F"

Si vous êtes prêt à aller au-delà des commandes natives de cmd.exe, une autre option est mon programme de gestion de l'environnement. Utilitaire de renommage par expression régulière JREN.BAT qui prend en charge les options permettant de convertir les noms en majuscules ou en minuscules. C'est un pur script (hybride JScript/batch) qui fonctionne nativement sur n'importe quelle machine Windows à partir de XP - aucun fichier exe tiers n'est nécessaire. Une documentation complète est intégrée - accessible depuis la ligne de commande via jren /? ou jren /?? si vous voulez une sortie paginée.

Avec le JREN, la solution récursive est aussi simple que :

jren "^" "" /s /l

8voto

wc.matteo Points 71

Version "récursive" de la réponse acceptée (qui fonctionne*)

for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"') do (for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g"))


La première boucle

for /f "Tokens=*" %f in ('cmd /c "echo %cd%& dir /l/b/ad/s"')

Obtient une liste des chemins absolus de tous les répertoires à l'intérieur du courant (y compris lui) :

C:\Foo >

  • C:\Foo \TO.txt

  • C:\Foo\Bar \LOWER.txt

  • C:\Foo\Bar\Baz \CASE.txt


La deuxième boucle

for /f "Tokens=*" %g in ('dir /l/b/a-d "%f"') do (rename "%f"\"%g" "%g")

Obtient une liste de tous les les noms de fichiers (ou fichier et répertoire les noms si vous enlevez le /a-d ) à l'intérieur de chacun des chemins absolus trouvé par le première boucle et convertit le nom de ces fichiers en minuscules.

  • C:\Foo\ TO.txt

  • C:\Foo\Bar\ LOWER.txt

  • C:\Foo\Bar\Baz\ CASE.txt


* il a besoin de deux boucles parce que le deuxième argument à rename doit être un nom du fichier et non un chemin absolu (comme celle obtenue par le /s interrupteur).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X