Windows Batch Scripting

Modification de noms de fichiers par traitement par lots

Spread the love

Ce tutoriel explique comment créer des scripts batch pour supprimer un nombre spécifié de caractères du début ou de la fin des noms de fichiers dans un répertoire. Les scripts batch offrent un moyen simple mais puissant d’automatiser les tâches de gestion de fichiers sous Windows.

Table des matières

Création d’un fichier batch pour supprimer des caractères

Commencez par créer un nouveau fichier texte (par exemple, à l’aide du Bloc-notes) et enregistrez-le avec l’extension .bat (par exemple, renommer_fichiers.bat). Ce fichier contiendra les instructions du script batch.

Le cœur de notre script exploite les capacités de manipulation de chaînes de caractères de l’interpréteur de commandes Windows à l’aide de la syntaxe %variable:~start,length%. Cela extrait une sous-chaîne d’une variable. start est la position de départ (index commençant à 0), et length est le nombre de caractères à extraire. Une valeur start négative compte à partir de la fin de la chaîne.

Suppression de caractères de la fin des noms de fichiers

Illustrons la suppression des 3 derniers caractères de tous les fichiers .txt d’un répertoire :

@echo off
setlocal

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~0,-3!"
  if "!newfilename!"=="" (
    echo Ignorer %%a : Nom de fichier trop court.
  ) else (
    ren "%%a" "!newfilename!"
  )
)

endlocal

Ce script amélioré inclut la gestion des erreurs pour éviter les problèmes avec les noms de fichiers de moins de 3 caractères.

  • @echo off : Supprime l’affichage des commandes.
  • setlocal : Crée un environnement local, isolant les variables.
  • for %%a in (*.txt) do (...) : Itère sur les fichiers .txt.
  • set "filename=%%a" : Affecte le nom de fichier à une variable (les guillemets gèrent les espaces).
  • set "newfilename=!filename:~0,-3!" : Extrait la sous-chaîne (tout sauf les 3 derniers caractères).
  • if "!newfilename!"=="" (...) : Vérifie les noms de fichiers vides et les ignore.
  • ren "%%a" "!newfilename!" : Renomme le fichier (les guillemets gèrent les espaces).
  • endlocal : Termine l’environnement local.

Suppression de caractères du début des noms de fichiers

Pour supprimer des caractères du début, modifiez l’extraction de la sous-chaîne. Par exemple, pour supprimer les 5 premiers caractères :

@echo off
setlocal

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~5!"
  ren "%%a" "!newfilename!"
)

endlocal

Ici, ~5 commence l’extraction à partir du 6e caractère (index 5), supprimant efficacement les 5 premiers.

Gestion des erreurs et des cas particuliers

Le script amélioré ci-dessus inclut une vérification des noms de fichiers plus courts que la longueur de suppression spécifiée. Cela empêche les erreurs et les comportements inattendus. Pour une gestion des erreurs plus robuste, vous pouvez ajouter des vérifications pour les fichiers existants avec les nouveaux noms afin d’éviter les écrasements.

Utilisation avancée : Suppression d’un nombre variable de caractères

Pour supprimer un nombre variable de caractères, utilisez des variables pour définir le nombre. Vous pouvez demander à l’utilisateur une entrée :

@echo off
setlocal

set /p "charsToRemove=Entrez le nombre de caractères à supprimer : "

for %%a in (*.txt) do (
  set "filename=%%a"
  set "newfilename=!filename:~%charsToRemove%!"
  ren "%%a" "!newfilename!"
)

endlocal

N’oubliez pas de valider l’entrée de l’utilisateur pour éviter des résultats inattendus.

Conclusion

Ce guide a montré comment créer des scripts batch pour supprimer des caractères des noms de fichiers. Sauvegardez toujours vos fichiers avant d’exécuter de tels scripts. Adaptez ces scripts à vos besoins spécifiques en ajustant les extensions de fichiers, le nombre de caractères et la gestion des erreurs.

FAQ

  • Q : Que faire si j’ai des espaces dans mes noms de fichiers ? R : Les guillemets autour des noms de fichiers dans la commande ren sont essentiels pour gérer correctement les espaces.
  • Q : Puis-je supprimer un nombre variable de caractères ? R : Oui, comme indiqué dans la section sur l’utilisation avancée.
  • Q : Que se passe-t-il si le nom de fichier est plus court que le nombre de caractères que je souhaite supprimer ? R : Les scripts améliorés gèrent cela en ignorant les noms de fichiers courts.
  • Q : Puis-je utiliser cela sur d’autres types de fichiers ? R : Oui, changez *.txt dans la boucle for par le caractère générique souhaité (par exemple, *.* pour tous les fichiers).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *