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 :

Suppression d'espaces dans des noms de dossiers par batch [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 29
    Par défaut Suppression d'espaces dans des noms de dossiers par batch
    Bonjour,

    Ceci est mon premier post, je ne suis pas sûr d'être au bon endroit...

    Ma problématique est que j'essaie depuis plusieurs jours de supprimer les espaces ou caractères spéciaux dans une arborescence de noms de répertoires.

    Je dois d'abord copier l'arborescence ainsi que les fichiers la composant, puis
    renommer les répertoires & fichiers en supprimant les espaces et caractères spéciaux.

    J'ai bien réussi à recopier l'arborescence d'un point A vers un point B, à supprimer les espaces et caractères spéciaux des noms de fichiers, mais rien à faire pour la façon de faire sur les noms des répertoires...

    J'ai écris ce début de script, je ne sais pas si quelqu'un pourrait m'aider sur la partie "Répertoires", je cherche en vain, ai fait de nombreux tests, sans succès

    Merci beaucoup.

    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
     
    @echo off
    setlocal enableextensions enabledelayedexpansion
    title FileRename
    color 0F
     
    rem **** pour afficher les caractères accentués dans la fenêtre cmd *****
    chcp 1252 > nul
     
    rem *****Déclaration des répertoires *****
    set "OrigineDir=C :\temp\Rodolphe"
    set "FinalDir C:\temp\test "
     
    rem ***** Copy les dossiers et fichiers source vers nouvel emplacement*******
    xcopy "!OrigineDir!" "!FinalDir!" /e /i
     
    for /r "C:\temp\rodolphe" %%a in (*.*) do (
      set "path=%%~nxa"  
      set "path=!path: =_!"
      set "path=!path:@=_!"
      set "path=!path:é=e!"
      set "path=!path:è=e!"
      set "path=!path:'=_!"
      move /y "%%~a" "%%~dpa!path!"
    )
    pause

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Évite d'utiliser des variables système comme path
    setlocal nécessite que de enabledelayedexpansion pour ce script
    Attention à tes définitions de OrigineDir et FinalDir, tu as des espaces et il manque le =

    Le dossier FinalDir n'a pas besoin d'être créé au préalable
    Dans ce script le dossier OrigineDir ne sera pas modifié, les dossiers et fichiers seront directement créé/copié dans FinalDir

    Je te propose ceci
    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
    @echo off
    setlocal enabledelayedexpansion
    title FileRename
    color 0F
     
    rem **** pour afficher les caractères accentués dans la fenêtre cmd *****
    chcp 1252 >nul
     
    rem *****Déclaration des répertoires *****
    set "OrigineDir=C:\temp\Rodolphe"
    set "FinalDir=C:\temp\test"
     
    md "%FinalDir%" 1>nul 2>nul
    for /f "usebackq delims=" %%a in (`dir "%OrigineDir%" /a/b/s/og 2^>nul`) do (
      set "item=%%~a"
      set "item=!item:%OrigineDir%=!"
     
      set "item=!item: =_!"
      set "item=!item:@=_!"
      set "item=!item:é=e!"
      set "item=!item:è=e!"
      set "item=!item:'=_!"
     
      set "item=%FinalDir%!item!"
      if exist "%%~a\" (md "!item!" 1>nul 2>nul) else (copy "%%~a" "!item!" /Y 1>nul 2>nul)
    )
    pause

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 29
    Par défaut
    Bonjour,

    Merci beaucoup c'est nickel. En effet, pour les petites erreurs de répertoires, j'avais changé avant de poster, car c'était des chemins pointant sur des serveurs.....

    je vais essayer de décortiquer pas à pas pour essayer de comprendre la mécanique de ton script.

    C'est super génial, ça fait plusieurs jours que j'essayais en vain de résoudre ce problème.

    Dois-je faire quelque chose concernant ce ticket pour le clôturer et pour valider que tu es un expert

    Rodolphe

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 29
    Par défaut
    re,

    Juste une question? Le renommage fonctionne bien en terme d'espace et de caractères spéciaux pour les répertoires & les fichiers.

    Par contre, tous les fichiers (txt, docx, xlsx...) sont représentés comme des dossiers et non plus des fichiers.... dans l'arborescence?

    Peux-tu me dire à quoi ce serait dû?

    Merci beaucoup.FileRename.pdf

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 29
    Par défaut
    J'ai l'impression que cette ligne de commande renomme en nouveau répertoire tout ce qu'elle trouve dans l'arborescence....d'ou la transformation de tous mes fichiers en répertoires

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    if exist "%%~a\" (md "!item!" 1>nul 2>nul) else (copy "%%~a" "!item!" /Y 1>nul 2>nul)

    @++

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Le sujet n'est donc pas résolu
    J'avais pourtant fait des tests

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    if exist "%%~a\" (md "!item!" 1>nul 2>nul) else (copy "%%~a" "!item!" /Y 1>nul 2>nul)
    Si l'item %%a est un dossier (finit par \) il crée un dossier, sinon il copie le fichier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Espaces dans les noms de dossiers
    Par zoscoy dans le forum Shell et commandes GNU
    Réponses: 17
    Dernier message: 03/11/2014, 17h06
  2. [Solaris][KSH] awk : Remplacer un motif dans des noms de fichiers par un autre motif
    Par keketteboy dans le forum Shell et commandes POSIX
    Réponses: 0
    Dernier message: 12/10/2012, 15h23
  3. Réponses: 2
    Dernier message: 26/01/2012, 15h43
  4. fontion : Gestion des espaces dans les noms de dossier
    Par _stephnane_ dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 10/11/2010, 10h56
  5. Apostrophes et espaces dans des noms d'attributs
    Par Grulf dans le forum Langage SQL
    Réponses: 12
    Dernier message: 02/07/2008, 09h03

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