Magic Quadrant™ pour la gestion des accès privilégiés 2025 : Netwrix reconnue pour la quatrième année consécutive. Téléchargez le rapport.

Plateforme
Centre de ressourcesBlog
Utilisation de la Cmdlet Rename-Item pour renommer des fichiers dans PowerShell

Utilisation de la Cmdlet Rename-Item pour renommer des fichiers dans PowerShell

Oct 9, 2024

Qu'est-ce que la cmdlet Rename-Item ?

Le cmdlet Rename-Item dans PowerShell peut être utilisé pour changer le nom d'un élément. Cet élément peut être un fichier, un répertoire ou tout objet dans un chemin. Le cmdlet peut également être utilisé pour renommer des éléments localement et dans un environnement réseau. Les utilisateurs peuvent également effectuer des opérations de renommage par lots, intégrer des tâches de renommage dans des scripts pour automatisation, et même gérer des exigences de renommage complexes avec l'aide de caractères génériques et d'expressions régulières. Par exemple, les utilisateurs peuvent facilement changer les noms de fichiers et les extensions ou organiser les fichiers en incorporant des horodatages ou d'autres informations d'identification dans leurs noms.

Cmdlet Rename-Item : Syntaxe

Ci-dessous se trouve la syntaxe de l'applet de commande PowerShell Rename-Item et ses paramètres de support, qui offrent flexibilité et contrôle sur le processus de renommage.

      Rename-Item -Path <String> -NewName <String> [-Force] [-PassThru] [-WhatIf] [-Confirm] [<CommonParameters>]
      

Ci-dessous se trouve le cmdlet de base de Rename-Item ; cette commande renomme un fichier de « Report.txt » à « Report-26-09-2024.txt » dans le répertoire courant.

      Rename-Item -Path "C:\Temp\Report.txt" -NewName "Report-26-09-2024.txt"
      

Tutoriel de script Windows PowerShell (PDF) pour débutants

En savoir plus

Rename-Item : Paramètres

Comprendre les paramètres de Rename-Item vous aidera à utiliser efficacement le cmdlet pour renommer des éléments. Ci-dessous se trouve une explication de tous les paramètres utilisés avec ce cmdlet dans PowerShell.

Paramètres

Description

-Path

Indique le chemin de l'élément à renommer. Cela peut être le chemin complet ou relatif au répertoire actuel. L'élément sur le chemin peut être un fichier, un dossier ou tout autre type prenant en charge le renommage. Ce paramètre est obligatoire.

-LiteralPath

Fournit une alternative à -Path. Il est utilisé pour spécifier le chemin lorsque les noms d'éléments incluent des caractères spéciaux que PowerShell pourrait interpréter différemment, tels que « [ » ou « ] ». Contrairement à -Path, les caractères génériques ne sont pas autorisés et la chaîne spécifiée est utilisée exactement telle quelle.

-NewName

Ce paramètre obligatoire représente le nouveau nom de l'élément. Il est important de noter que cela doit être uniquement le nom de l'élément, pas un chemin. Si vous renommez un fichier et souhaitez conserver son type de fichier, assurez-vous d'inclure l'extension de fichier appropriée dans le nouveau nom.

-Credential

Bien que non couramment utilisé dans les scripts pour la gestion des fichiers locaux, ce paramètre optionnel permet au cmdlet de s'exécuter en utilisant un ensemble d'identifiants spécifiés par l'utilisateur. Cela peut être utile lors de la manipulation de fichiers sur un partage réseau ou dans tout scénario nécessitant des permissions spécifiques.

-Force

Ce paramètre permet à la cmdlet de renommer des éléments en lecture seule, cachés ou autrement protégés. Il outrepasse les restrictions qui empêcheraient généralement l'opération de réussir.

-PassThru

Par défaut, Rename-Item ne produit aucun objet. Lorsque le paramètre -PassThru est utilisé, le cmdlet renvoie l'objet qui a été renommé. Cela peut être utile pour transmettre l'élément renommé à d'autres commandes ou pour une vérification immédiate de l'opération.

-WhatIf

Cette fonction de sécurité simule l'exécution de la cmdlet sans effectuer l'opération de renommage. Elle montre ce qui se passerait si la cmdlet était exécutée, offrant ainsi un aperçu des résultats. Cela peut être particulièrement utile dans les scripts ou les opérations par lots où vous souhaitez éviter des conséquences non intentionnelles.

-Confirmez

Demande une confirmation à l'utilisateur avant d'exécuter le cmdlet. Cela peut être utile dans des scripts interactifs ou lors d'importantes modifications, offrant une couche de sécurité supplémentaire contre les actions non intentionnelles.

Exemples d'utilisation de Rename-Item avec des paramètres

Ci-dessous, vous trouverez quelques exemples de Rename-Item avec différents paramètres ; ces exemples montreront comment renommer des éléments dans diverses conditions, offrant une compréhension pratique de la manière d'appliquer le cmdlet dans des scénarios réels.

Voici un exemple de base d'une cmdlet, qui renomme un seul fichier de “Design.txt” à “Report.txt”.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt"
      

Le paramètre -Force renomme les fichiers en lecture seule ou cachés, comme illustré dans l'exemple ci-dessous.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -Force
      

Le paramètre -PassThru renvoie un objet représentant l'élément renommé, qui peut ensuite être transmis à un autre cmdlet. Après le renommage, nous obtenons immédiatement tous les détails de l'élément renommé.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -PassThru | Get-Item
      
Image

Pour voir ce qui se passerait sans effectuer le renommage, utilisez le paramètre -WhatIf. Cela est particulièrement utile pour les tests dans les scripts. Après avoir confirmé le résultat, exécutez le cmdlet sans le paramètre -WhatIf pour le processus de renommage réel.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "C:\Backups\NewDesign.txt" -WhatIf
      
Image

La sortie décrira l'action mais ne l'exécutera pas.

Si vous souhaitez être invité à confirmer avant que le renommage ne se produise, utilisez le paramètre Confirm. Cela est utile dans les scénarios où un renommage accidentel pourrait avoir des conséquences importantes.

      Rename-Item -Path "C:\Backups\Design.txt" -NewName "Report.txt" -Confirm
      

Vous serez invité à confirmer l'action avant qu'elle ne se poursuive.

Image

Paramètres Path vs. LiteralPath

Lorsque vous travaillez avec des cmdlets qui impliquent des opérations sur les fichiers et les répertoires, vous rencontrerez souvent deux paramètres, -Path et -LiteralPath. Comprendre les différences entre ces deux paramètres est essentiel pour gérer efficacement les tâches du système de fichiers, en particulier lorsque vous traitez avec des noms de fichiers ou des chemins qui incluent des caractères spéciaux ou des mots réservés.

-Path

-Path est le paramètre le plus couramment utilisé pour spécifier l'emplacement des éléments. Il prend en charge le caractère générique (*), permettant l'appariement de motifs et la sélection de plusieurs éléments avec une seule commande. PowerShell interprète les caractères spéciaux, y compris les caractères génériques. Cela signifie que si vos noms de fichiers ou chemins comprennent des caractères comme « [],(),{} », PowerShell pourrait les traiter comme faisant partie d'un motif générique, ce qui pourrait conduire à un comportement inattendu.

Exemple

      Rename-Item -Path C:\Logs\*
      

-LiteralPath

-LiteralPath est utilisé pour spécifier l'emplacement des éléments sans interpréter aucun caractère comme des jokers. Vous pouvez entrer ce paramètre lorsque vous traitez des noms de fichiers ou des chemins qui incluent des caractères spéciaux, en garantissant que PowerShell traite la chaîne d'entrée littéralement sans essayer de faire correspondre des motifs.

Exemple

      Rename-Item -LiteralPath “C:\Files\[Design].txt”
      

Exemples courants d'utilisation de Rename-Item

Renommer et déplacer des fichiers

Vous ne pouvez pas utiliser le cmdlet Rename-Item pour renommer des fichiers via PowerShell et les déplacer vers un autre emplacement. Vous obtiendrez l'erreur ci-dessous en faisant cela.

Image

Vous devez utiliser le cmdlet Move Item pour déplacer le fichier et renommer simultanément le nom du fichier dans la destination.

Voici comment vous pouvez utiliser cmdlet pour déplacer et renommer des fichiers.

      Move-Item -Path "C:\Backups\Design.txt" -Destination "C:\Archive\NewDesign.txt"
      

Renommer les fichiers cachés et en lecture seule

Pour renommer un fichier caché ou en lecture seule, utilisez le paramètre -Force avec le cmdlet Rename-Item. Ce paramètre permet à PowerShell de contourner l'attribut de lecture seule pendant le processus de renommage.

      Rename-Item -Path "C:\Documents\ReadOnlyFile.txt" -NewName "RenamedFile.txt" -Force
      

Renommer les fichiers en lot

Le renommage par lot de fichiers à l'aide de PowerShell est une tâche courante lors de la gestion de grands ensembles de données, de l'organisation d'archives ou simplement du nettoyage de répertoires.

Si vous devez changer l'extension de plusieurs fichiers, par exemple de « .txt » à « .log », vous pouvez utiliser le script suivant.

      Get-ChildItem -Path "C:\Documents" -Filter "*.txt" | ForEach-Object {

    $newName = [io.path]::ChangeExtension($_.Name, ".log")

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Ou vous pouvez utiliser le cmdlet PowerShell ci-dessous pour renommer plusieurs fichiers et extensions de fichier sans ajouter de boucle pour chaque fichier.

      Get-ChildItem -Path "C:\Documents\*.txt" | Rename-Item -NewName { $_.Name -replace ".txt",".log" }
      

Ajout de préfixes et de suffixes

En utilisant la commande PowerShell pour renommer tous les fichiers dans un répertoire, vous pouvez ajouter des préfixes ou des suffixes aux noms de fichiers. C'est une tâche courante lors de l'organisation de fichiers, du versionnage de documents ou de la préparation des données pour l'archivage. Avec PowerShell, vous pouvez utiliser les cmdlets Get-ChildItem et Rename-Item pour ajouter des préfixes et des suffixes afin de le faire.

Vous pouvez utiliser le script suivant pour ajouter un préfixe à tous les fichiers dans un répertoire spécifique.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Project_" + $_.Name)

}
      

De même, vous pouvez utiliser le script ci-dessous pour ajouter un suffixe avant l'extension du fichier.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_Final" + $_.Extension)

}
      

Ajoutez le préfixe « Backup_ » et le suffixe « _2024 » à tous les fichiers .txt.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Backup_" + $_.BaseName + "_2024" + $_.Extension)

}
      

Renommer les fichiers avec des horodatages

Renommer des fichiers pour inclure des horodatages peut être incroyablement utile pour créer des sauvegardes, organiser des archives ou suivre les versions de fichiers.

Cet exemple montre comment ajouter un horodatage au format “yyyyMMdd_HHmmss” comme suffixe à tous les fichiers “.txt” dans un répertoire spécifique.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

    $newName = $_.BaseName + "_" + $timestamp + $_.Extension

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Si vous préférez que le timestamp soit au début du nom de fichier, vous pouvez légèrement modifier le script comme suit.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

    $newName = $timestamp + "_" + $_.Name

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Si vous souhaitez renommer tous les fichiers .txt dans le répertoire C:\Documents, ajoutez l'horodatage de création au début.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ("$timestamp" + "_" + $_.Name)

}
      

Si vous souhaitez ajouter le timestamp de modification comme suffixe à tous les fichiers .txt.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $timestamp = $_.LastWriteTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ($_.BaseName + "_" + $timestamp + $_.Extension)

}
      

Si vous souhaitez ajouter l'horodatage de création comme préfixe et l'horodatage de dernière modification comme suffixe pour tous les fichiers .docx.

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $creationTimestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    $modifiedTimestamp = $_.LastWriteTime.ToString("yyyyMMdd_HHmmss")

    Rename-Item -Path $_.FullName -NewName ("$creationTimestamp" + "_" + $_.BaseName + "_$modifiedTimestamp" + $_.Extension)

}
      

Gestion des collisions de noms de fichiers

Il est important de gérer les collisions de noms de fichiers lors de l'automatisation des opérations sur les fichiers, telles que le renommage ou le déplacement, pour éviter d'écraser involontairement des fichiers existants. Vous pouvez vérifier si un fichier avec le nouveau nom existe déjà. Si c'est le cas, vous pouvez modifier le nouveau nom (par exemple, en ajoutant un compteur ou un horodatage supplémentaire).

Exemple : Ajoutez un compteur et une date de création pour les collisions

      Get-ChildItem -Path "C:\Documents\*.txt" | ForEach-Object {

    $baseName = $_.BaseName

    $extension = $_.Extension

    $creationTimestamp = $_.CreationTime.ToString("yyyyMMdd_HHmmss")

    $newName = "$baseName" + "_$creationTimestamp" + "$extension"

    # Initialize a counter for collisions

    $counter = 1

    # Check if the new name already exists

    while (Test-Path -Path (Join-Path -Path $_.DirectoryName -ChildPath $newName)) {

        $newName = "$baseName" + "_$creationTimestamp" + "_$counter" + "$extension"

        $counter++

    }

    Rename-Item -Path $_.FullName -NewName $newName

}
      

Explication

Le script ci-dessus récupère tous les fichiers .txt. Il construit un nouveau nom avec un horodatage comme date de création du fichier, puis vérifie si le nouveau nom existe déjà. Si c'est le cas, il ajoute un compteur, par exemple, “_1”, “_2”, etc. jusqu'à ce qu'un nom unique soit trouvé.

Renommer les clés de registre

Pour renommer une clé de registre à l'aide de PowerShell, vous pouvez utiliser l'applet de commande Rename-Item et exporter la clé que vous prévoyez de renommer avant de tenter d'exécuter l'applet de commande. C'est une mesure de précaution pour garantir une sauvegarde en cas de problème.

      Rename-Item -Path "HKLM:\Software\MyCompany\Advertising" -NewName "Marketing"
      

Tutoriel Microsoft 365 : Guide complet d'administration

En savoir plus

Utilisez des expressions régulières pour le renommage complexe

Commande PowerShell pour renommer les fichiers dans un dossier

L'utilisation de l'opérateur -replace est un moyen puissant de renommer des fichiers dans un dossier, en appliquant des motifs d'expression régulière (regex). Cette approche peut être avantageuse pour les opérations de renommage en masse où vous devez ajouter, supprimer ou modifier des parties de noms de fichiers ou de répertoires en fonction de motifs spécifiques.

Par exemple, vous avez un tas de fichiers nommés comme “report1_2023-04-01.txt”, “report2_2023-04-02.txt”, etc., et vous souhaitez supprimer les dates dans leurs noms ainsi que le trait de soulignement (_).

La commande ci-dessous trouve tous les fichiers .txt dont les noms commencent par « report* » suivis d'un horodatage et les renomme en supprimant l'horodatage, ne laissant que « report.txt » avec le numéro intact, par exemple, « report1.txt », « report2.txt ».

      Get-ChildItem -Path "C:\Backups"-Filter "report*.txt" | Rename-Item -NewName {$_.Name -replace '_\d{4}-\d{2}-\d{2}', ''}
      

Numérotation séquentielle

L'ajout d'une numérotation séquentielle aux noms de fichiers à l'aide de l'applet de commande Rename-Item nécessite un peu de script pour implémenter un compteur tout en itérant à travers les fichiers. Cela peut être particulièrement utile pour organiser les fichiers dans un ordre spécifique ou pour garantir leur unicité.

Si vous souhaitez renommer des fichiers pour inclure des numéros séquentiels (par exemple, « Image_1.jpg », « Image_2.jpg »), vous pouvez utiliser le script ci-dessous.

      $counter = 1

Get-ChildItem -Path "C:\Images" -Filter "*.jpg" | ForEach-Object {

    Rename-Item -Path $_.FullName -NewName ("Image_$counter.jpg")

    $counter++

}
      

Contenu connexe sélectionné :

Erreurs courantes et dépannage de Rename-Item

Vous pourriez rencontrer certaines erreurs ou problèmes courants lors de l'utilisation de PowerShell pour renommer des fichiers, des répertoires et des clés de registre. Comprendre ces pièges potentiels et comment les résoudre peut aider à garantir que vos tâches de renommage de fichiers et de répertoires se déroulent sans encombre. Voici quelques erreurs courantes et des conseils pour le dépannage.

Erreur de fichier non trouvé

PowerShell n'a pas pu trouver le chemin car il n'existe pas. Vérifiez s'il y a des fautes de frappe dans le chemin du fichier. Utilisez la cmdlet Test-Path pour vérifier si le fichier existe avant d'essayer de le renommer.

      if (Test-Path "C:\Backups\design.txt") {

    Rename-Item -Path "C:\Backups\Design.txt" -NewName "NewDesign.txt"

} else {

    Write-Host "File does not exist."

}
      

Fichier en cours d'utilisation

Le cmdlet ne peut pas accéder au fichier car un autre processus est utilisé. Cette erreur se produit si le fichier que vous essayez de renommer est ouvert dans une autre application. Fermez le fichier dans toute autre application qui pourrait l'utiliser. Si le problème persiste, vous devrez peut-être terminer les processus qui ont verrouillé le fichier ou redémarrer le système pour que le fichier soit déverrouillé.

Erreur d'accès refusé

L'accès au chemin est refusé, ou les permissions insuffisantes pour modifier le fichier ou la clé de registre.

Pour éviter cette erreur, exécutez PowerShell en tant qu'administrateur ou vérifiez les permissions du fichier ou de la clé et ajustez-les si nécessaire.

Erreur de chemin d'accès trop long

Le chemin spécifié, le nom de fichier ou les deux sont trop longs. Windows a une limite de longueur maximale de chemin (généralement 260 caractères). Raccourcissez le chemin en déplaçant les fichiers vers un niveau de répertoire supérieur.

Erreur : la destination existe déjà

Il ne peut pas être renommé car la destination existe déjà. Le nouveau nom de fichier existe déjà dans le répertoire de destination. Vérifiez si le fichier de destination existe en utilisant Test-Path. Modifiez votre script pour gérer les conflits, comme ajouter un suffixe ou incrémenter un numéro.

Erreur de caractères non valides

Le nom du fichier, du répertoire ou de la clé de registre est incorrect. Le nouveau nom de fichier contient des caractères invalides. Assurez-vous que le nouveau nom ne contienne pas de caractères invalides. Utilisez une expression régulière pour supprimer ou remplacer les caractères invalides avant de renommer.

Conclusion

Vous pouvez utiliser la commande Rename-Item dans PowerShell pour changer le nom d'un fichier, répertoire ou autre élément dans le système de fichiers. Cette commande ne modifie pas l'élément en lui-même, seulement son nom. Vous pouvez l'utiliser dans PowerShell pour renommer des éléments en spécifiant le chemin actuel et le nouveau nom. La commande offre également des options pour forcer l'opération, montrer ce qui se passerait sans réellement renommer l'élément, et demander une confirmation avant de renommer. Cette commande est utile pour automatiser les tâches de gestion de fichiers et de répertoires, par exemple, ajouter des préfixes, des suffixes et une numérotation séquentielle aux fichiers.

Netwrix Directory Manager

FAQ

Qu'est-ce que la cmdlet Rename-Item dans PowerShell ?

La cmdlet Rename-Item est utilisée pour renommer des éléments à l'aide de PowerShell, par exemple des fichiers ou des clés de registre. Elle dispose de nombreux paramètres pris en charge, par exemple -Path, -Force, -WhatIf, -Confirm ou -Passthru à utiliser dans différents scénarios.

Puis-je déplacer un fichier et le renommer simultanément avec Rename-Item ?

Non, les fichiers ne peuvent pas être déplacés et renommés simultanément en utilisant Rename-Item. Vous devez utiliser Move-Item pour d'abord déplacer le fichier et spécifier la destination avec un nouveau nom de fichier.

Partager sur

En savoir plus

À propos de l'auteur

Asset Not Found

Kevin Horvatin

Architecte logiciel principal

Kevin Horvatin est Lead Software Architect chez Netwrix et responsable de Netwrix Privilege Secure. Développeur de logiciels depuis plus de 20 ans, il travaille avec PowerShell et C# depuis leur introduction.