J'ai besoin d'un moyen de renommer tous les fichiers des dossiers et des sous-dossiers en minuscules.
J'aimerais savoir s'il existe un moyen de le faire en utilisant uniquement Windows (XP ou 7)
J'ai besoin d'un moyen de renommer tous les fichiers des dossiers et des sous-dossiers en minuscules.
J'aimerais savoir s'il existe un moyen de le faire en utilisant uniquement Windows (XP ou 7)
Réponses:
Accédez au répertoire et exécutez la commande suivante:
Voici la ventilation 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 votre nom de variable pour chaque élément.dir
- répertorie tous les fichiers et sous-répertoires d'un répertoire./l
- (paramètre pour dir) Utilise des minuscules./b
- (paramètre pour dir) Utilise le format nu, uniquement les noms de fichier / répertoire, pas de taille, pas d'en-tête./a-d
- (paramètre pour dir) Ne répertorie pas les répertoires . (a
signifieattribute
,-
représentenot
etd
représentedirectory
) .rename "%f" "%f"
- renommez le fichier avec son propre nom, qui est en fait mis en minuscule par ladir
commande et la/l
combinaison.la source
for /f "Tokens=*" %f in ('dir /l/b/a-d/s') do (rename "%f" "%f")
(ajouté / r à dir).spacetornado Renamer 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 majuscule, en majuscule ou en première lettre, et ajouter du texte au début ou à la fin (ajouter / prépendre) de chaque nom de fichier.
la source
Depuis Windows 7, vous pouvez utiliser PowerShell pour ces tâches.
- Choisissez votre dossier racine
- tous les fichiers du dossier racine et des sous-dossiers sont renommés
- les noms de dossier sont exclus avec
Where {-Not $_.PSIsContainer} |
la source
Voici une solution de ligne de commande récursive appropriée utilisant uniquement les commandes natives cmd.exe qui fonctionnent réellement. Je crois que c'est la solution native la plus simple possible:
Si vous souhaitez aller au-delà des commandes natives cmd.exe, une autre option est mon utilitaire de changement de nom d'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 script pur (hybride JScript / batch) qui s'exécute de manière native sur toute machine Windows à partir de XP - aucun fichier exe tiers n'est nécessaire. Une documentation complète est intégrée - accessible à partir de la ligne de commande via
jren /?
oujren /??
si vous souhaitez une sortie paginée.Avec JREN, la solution récursive est aussi simple que:
la source
/a-d
commutateur et les noms des dossiers seront également minuscules." D"') was unexpected at this time.
L'exécuter en tant que commande directe fonctionne bien, mais ne fonctionne tout simplement pas lorsqu'il est exécuté en tant que fichier de commandes. Je ne savais pas trop comment le faire fonctionner comme un fichier de commandes, mais je pensais que je me mettrais au courant.%D
faut donc changer à%%D
, et%F
à%%F
si vous mettez la commande dans un script batch.Mon utilitaire préféré de changement de nom de fichier par lots est le WildRename de Cylog . Parmi beaucoup d'autres fonctionnalités, cela peut changer la casse des noms de fichiers. La meilleure chose à propos de WildRename est probablement qu'il supporte les expressions régulières!
la source
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 celui-ci):
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 noms de fichiers (ou des noms de fichiers et de répertoires si vous retirez le
/a-d
commutateur) à l'intérieur de chacun des chemins absolus trouvés par la 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 faut deux boucles car le deuxième argument
rename
doit être un nom de fichier et non un chemin absolu (comme celui obtenu par le/s
commutateur).la source
cmd /c "echo %cd%&
dans le premierfor
? C'est complètement inutile.echo %cd%
est là pour ajouter le dossier actuel à la liste des chemins absolus . etcmd /c
fait&
en sorte de combiner les commandes. Je suis un noob total en ce qui concerne Windows Batch Scripting ; Si vous connaissez une meilleure solution, n'hésitez pas à améliorer la réponse!Vous pouvez utiliser une stratégie de "remplacement de personnage" ...
... et ainsi de suite pour les lettres AZ. Vous pourriez probablement l'implémenter sous la forme d'une boucle FOR.
la source
http://www.dostips.com/DtCodeCmdLib.php#Function.toLower fournit une fonction simple que vous devriez pouvoir inclure et appeler à partir d'un fichier de commandes.
Alors, faites en sorte que le fichier de commandes parcoure les dossiers / noms de fichiers et appelez cette fonction pour générer la version minuscule du nom.
la source
De http://windowsitpro.com/articles/index.cfm?articleid=81612 :
En utilisant uniquement les commandes standard, j'ai scripté LwrCase.bat et LwrCase_Folder.bat pour renommer un nom de fichier en minuscule ou renommer tous les noms de fichier d’un dossier en minuscule.
Pour renommer un nom de fichier en minuscule, utilisez:
Où FullyQualifiedFileName est le nom de fichier complet à renommer.
Pour renommer tous les noms de fichiers d’un répertoire, utilisez:
où FullyQualifiedDirectoryName est le chemin d'accès complet au dossier et où / S est un paramètre facultatif permettant de renommer les noms de fichiers de tous les sous-dossiers.
Remarque: LwrCase.bat utilise le commutateur / L de la commande DIR, qui renvoie les noms en minuscules.
LwrCase.bat contient:
LwrCase_Folder.bat contient:
la source
Le meilleur programme pour cela dans Windows est Bulk Rename Utility . C'est un outil de l'homme. Vous pouvez même utiliser regex pour renommer des fichiers et / ou des dossiers. Il a également une intégration shell (vous pouvez donc exécuter à partir d’explorateur avec un clic droit) ce qui est très agréable. Versions 64 bits et 32 bits disponibles.
la source
La réponse acceptée à cette question, par loftysnake , fonctionne pour le répertoire en cours mais ne recherche pas les sous-dossiers. Sawny a suggéré une simple modification de la réponse de loftysnake pour la rendre récursive, mais cela ne fonctionne pas car, bien que la
rename
commande vous permette de spécifier un lecteur et un chemin avec filename1 (la source), filename2 (la destination) ne doit être qu'un fichier. . Pour citer le/?
message help ( ),Mais
move
fonctionne oùrename
ne fonctionne pas, vous pouvez donc renommer récursivement les fichiers en minuscule avec cette commande:car il s’avère que cela
Move
peut faire face aux chemins de répertoire.La commande ci-dessus fonctionne lorsqu'elle est directement saisie dans l'invite de commande (
CMD.EXE
). Si vous voulez faire cela depuis un.BAT
fichier batch ( ), vous devez doubler les%
caractères:Et vous pouvez probablement laisser de côté les parenthèses et le
/y
et juste diredo move …
.la source
move
fonctionnait là oùrename
cela ne fonctionnait pas, et je pense que je suis le seul à avoir suggéré l’utilisation de lamove
commande ici. J’ai simplement pris les suggestions de @loftysnake et de @sawny pour les améliorer un peu.move
, mais je ne le trouve pas maintenant.Solution récursive Mettez ceci dans un fichier recursiverename.cmd.
la source
Powershell
Accédez au répertoire et exécutez:
J'ai vérifié que cela fonctionne. Trouvé ici: http://www.hanselman.com/blog/PennyPinchingVideoMovingMyWebsitesImagesToTheAzureCDNAndUsingACustomDomain.aspx
la source