web-dev-qa-db-fra.com

Texte du nom de fichier (avant-bras) avec un fichier de commandes

J'ai une liste de fichiers qui sont dans le format à gauche. Je veux ajouter une chaîne à chaque nom de fichier, mais avant l'extension, comme indiqué:

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

Dans chaque cas, la chaîne ajoutée est la même pour tous les fichiers.

Cela semble être une tâche si simple, mais j’ai du mal à le mettre dans un fichier de commandes.

J'ai essayé la commande ren et suivi certains des exemples sur cette page , mais les noms de fichier résultants ajoutent la chaîne après l'extension:

File 1.txt version 1.txt
17
TheTurkey

pour les noms de fichiers plus longs, vous devrez ajouter un peu plus de ? dans le bloc avec la masse de ?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*
6
bummi

Au lieu de compter sur les bizarreries non documentées de ren , pourquoi ne pas le faire correctement?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

Si vous souhaitez utiliser ceci dans un fichier batch, n'oubliez pas de doubler chaque signe%.

38
Karan

Pour les personnes inexpérimentées avec la commande (comme moi), il existe deux logiciels qui permettent de renommer en bloc très facilement:

  • Renommer en bloc utilitaire (pas de source ouverte)
  • Renommez-le! (Open source)
2
MagTun

Je voulais ajouter "_A" à plusieurs fichiers et voici comment je l'ai fait.

J'ai d'abord supprimé l'extension, ajouté le suffixe, puis modifié l'extension à l'original. Cela a sûrement fonctionné pour moi et a gardé le code de lot simple, car je ne suis pas un grand programmeur.

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf
2
Avinash Arunagiri

La solution de @ bwDraco était bonne mais aurait pu être simplifiée. Mon ensemble de fichiers était tous * .jpg et je voulais les renommer tous * c.jpg. Vous avez seulement besoin de 2 étapes pour cela, pas 3:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg
1

Récursivement à travers les sous-dossiers

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done
0
Ferroao