IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Renommage en masse de fichiers (suppression d'extension)


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Par défaut Renommage en masse de fichiers (suppression d'extension)
    Bonjour à tous !

    J'ai de nombreux fichiers (+ de 50.000) ayants une double extension type : "nom_fichier.xyz.12345678" le nombre de caractères de la seconde extension étant variable entre 8 et 12, et cette suite peut être aléatoire.

    Je voudrai supprimer cette seconde extension et ne garder que la classique ".xyz". Le répertoire contenant ces fichiers contient également des sous répertoire contenant eux même des fichier a double extension, il faut donc que ce soit récursif.

    Auriez vous une idée sur la façon de procéder ?

    Merci

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut Mass-Rename.bat

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    @echo off & Title %~nx0 & CHCP 65001>nul
    :: ############################################
    :: Script hybride Batch + PowerShell
    :: Supprime les secondes extensions de fichiers
    :: ############################################
     
    setlocal enabledelayedexpansion
     
    :: Configuration
    set "directoryPath=C:\chemin\vers\vos\fichiers"  :: <-- À modifier
     
    echo.
    echo [1/3] Vérification de l'environnement...
    powershell -command "& {Get-Command -Name Get-ChildItem -ErrorAction Stop}" >nul 2>&1
    if %errorlevel% neq 0 (
        echo Erreur: PowerShell n'est pas installé
        pause
        exit /b 1
    )
     
    :: Menu interactif
    echo.
    echo [2/3] Mode de fonctionnement:
    echo 1. Mode simulation (affiche les changements sans modifier)
    echo 2. Mode réel (effectue les renommages)
    echo 3. Annuler
    set /p choice="Choisissez (1-3): "
     
    if "%choice%"=="3" exit /b
    if not "%choice%"=="1" if not "%choice%"=="2" (
        echo Choix invalide
        pause
        exit /b
    )
     
    :: Exécution du code PowerShell
    echo.
    echo [3/3] Traitement en cours...
    echo.
     
    set "psCommand=Get-ChildItem -Path '%directoryPath%' -Recurse -File | Where-Object { $_.Name -match '\.(\w+)\.\w{8,12}$' } | ForEach-Object {"
    set "psCommand=!psCommand! $newName = $_.Name -replace '\.\w{8,12}$','';"
     
    if "%choice%"=="1" (
        set "psCommand=!psCommand! Write-Host ('[SIMULATION] ' + $_.Name + ' -> ' + $newName);"
    ) else (
        set "psCommand=!psCommand! Rename-Item -Path $_.FullName -NewName $newName -Force;"
    )
     
    set "psCommand=!psCommand! }"
     
    powershell -NoProfile -ExecutionPolicy Bypass -Command "& {!psCommand!}"
     
    :: Résumé
    echo.
    echo Opération terminée.
    if "%choice%"=="1" echo MODE SIMULATION: Aucun fichier modifié
    pause
    exit /b

    Comment l'utiliser :
    1. Copiez ce code dans un fichier Mass-Rename.bat
    2. Modifiez directoryPath (ligne 10)
    3. Exécutez en tant qu'administrateur si nécessaire.

Discussions similaires

  1. [PowerShell] Problème renommage en masse fichier excel sous power shell
    Par Sue Andria dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/06/2017, 16h13
  2. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  3. copie et renommage de fichiers avec leur extension
    Par TaleMaker dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2009, 17h06
  4. [ZIP]besoin de lire des fichiers avec l'extension tar.gz
    Par mathieublanc13 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 24/05/2004, 13h35
  5. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo