Comment ajouter un préfixe à tous les fichiers et dossiers d'un dossier? (les fenêtres)

14

La commande suivante modifie uniquement le nom des fichiers mais pas les dossiers.

for %a in (*) do ren "%a" "00_%a"

MatMis
la source
Devez-vous absolument utiliser un fichier batch? Ne pouvez-vous pas utiliser un programme comme Rename Master pour ce faire?
Dour High Arch

Réponses:

15

La commande suivante modifie uniquement le nom des fichiers mais pas les dossiers.

for %a in (*) do ren "%a" "00_%a"

Remarques:

  • L'utilisation forcomme ci-dessus n'est pas conseillée.
  • Il est possible que les fichiers puissent être renommés plusieurs fois.
  • Voir ci-dessous pour la raison.

Utilisez ce qui suit dans un cmdshell:

for /f "tokens=*" %a in ('dir /b') do ren "%a" "00_%a"

Dans un fichier batch (remplacer %par %%):

for /f "tokens=*" %%a in ('dir /b') do ren "%%a" "00_%%a"

Remarque:

Il est essentiel que vous l'utilisiez FOR /Fet non le simple FOR.

Le FOR /Frassemble le résultat entier de la DIRcommande avant de commencer l'itération, tandis que le simple FORcommence l'itération après que le tampon interne est plein, ce qui ajoute un risque de renommer le même fichier plusieurs fois.

comme conseillé par dbenham dans sa réponse pour ajouter "texte" à la fin de plusieurs noms de fichiers :


Lectures complémentaires

DavidPostill
la source
0

Pour effectuer cette boucle For sur des dossiers (répertoires) au lieu de fichiers, incluez simplement le /Dcommutateur.

for /D %a in (*) do ren "%a" "00_%a"

De for /?:

FOR / D% variable IN (set) commande DO [paramètres de commande]

If set contains wildcards, then specifies to match against directory
names instead of file names.
Ƭᴇcʜιᴇ007
la source
renfonctionne sur les dossiers. La limitation est que "vous ne pouvez pas spécifier un lecteur ou un chemin différent pour la cible.
DavidPostill
@DavidPostill Oui, c'était une vieille habitude, je l'ai modifiée Ren.
Ƭᴇcʜιᴇ007
Vous pouvez créer des fichiers et des dossiers en une seule commande (voir ma réponse). Et je soupçonne for /dégalement d'avoir le problème d'essayer de traiter les valeurs plusieurs fois (voir également ma réponse).
DavidPostill