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 :

Remplacer espaces par underscores dans noms de fichiers [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Avril 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Avril 2012
    Messages : 113
    Par défaut Remplacer espaces par underscores dans noms de fichiers
    Bonjour à tous,

    J'ai environ 500 documents PDF avec des noms à rallonge pour lesquels il faut que je remplace tous les espaces par des underscores. Comme je n'ai aucune envie de faire ça manuellement, j'ai cherché une solution pour pouvoir m'épargner cette tâche, et ai trouvé ceci.

    Le problème, c'est que ça ne marche pas, et comme je ne connais malheureusement rien à ces scripts, je ne vois pas ce qui bloque Pour info, j'ai essayé en testant sur d'autres fichiers (histoire de pas faire de bêtise sur les importants). J'ai créé un dossier test, avec dedans deux fichiers PDF "Test 1" et "Test 2", j'y ai placé le fichier batch nommé "Batch test", et tout ce qui se passe lorsque je l'exécute, c'est que le fichier batch passe de "Batch test" à "Batchtest".

    J'ai donc grand besoin d'aide, parce que le renommage de docs manuellement un par un... enfin vous voyez quoi

    Merci beaucoup d'avance

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    essaye ça en remplaçant "<chemin_d'accès>" par le chemin d'accès du répertoire a traiter.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "<chemin_d'accès>" %%a in (*.pdf) do (
      set "path=%%~a"
      set "path=!path: =_!"
      copy /v "%%~a" "!path!"
      del /q "%%~a"
    )
    pause
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Membre confirmé
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Avril 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Avril 2012
    Messages : 113
    Par défaut
    Désolée, ça ne marche pas non plus Ca me retourne une erreur "Le chemin d'accès spécifié est introuvable. 0 fichier(s) copié(s)", écrite deux fois vu qu'il y a deux fichiers PDF dans le dossier de test (j'ai testé, avec quatre fichier l'erreur est retournée quatre fois).

    Est ce que je me trompe dans la syntaxe pour écrire le chemin d'accès ?

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "C:\Users\Moi\Documents\Dossier test" %%a in (*.pdf) do (
      set "path=%%~a"
      set "path=!path: =_!"
      copy /v "%%~a" "!path!"
      del /q "%%~a"
    )
    pause

    EDIT : j'ai oublié de préciser qu'avec le lancement du batch, les deux fichiers PDF disparaissent du dossier ! Heureusement que c'était du test

  4. #4
    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

    Une autre solution en Vbscript mais pas encore complète, juste affichage du résultat avec msgbox donc à essayer avec un dossier test
    Code : 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
    Option Explicit
    Dim fso,MonDossier,File,MyNewFile
    Set fso = CreateObject("Scripting.FileSystemObject")
    MonDossier = Parcourir_Dossier()
    Set MonDossier = fso.GetFolder(MonDossier)
    For each File in MonDossier.Files
        Msgbox File
        MyNewFile = Replace(File," ","_")
        Msgbox MyNewFile
    Next
    '*********************************************************************************************
    Function Parcourir_Dossier()
        Dim objShell,objFolder,Message
        Message = "Veuillez sélectionner un dossier pour renommer ses fichiers avec underscrore"
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(0,Message,1,"c:\Programs")
        If objFolder Is Nothing Then
            Wscript.Quit
        End If
        Parcourir_Dossier = objFolder.self.path
    end Function
    '*********************************************************************************************

  5. #5
    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

    Voici la solution complète en Vbscript
    Code : 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
    Option Explicit
    Dim fso,ws,MonDossier,File,MyNewFile
    set ws = CreateObject("wscript.Shell")
    Set fso = CreateObject("Scripting.FileSystemObject")
    MonDossier = Parcourir_Dossier()
    Set MonDossier = fso.GetFolder(MonDossier)
    For each File in MonDossier.Files
        MyNewFile = Replace(File," ","_")
        MyNewFile = GetNameFile(MyNewFile)
        Call RenameMyFile(File,MyNewFile)
    Next
    MsgBox "L'oprération est finie !",VbInformation,"L'oprération est finie !"
    ws.run "explorer.exe "& DblQuote(MonDossier)
    '*********************************************************************************************
    Function Parcourir_Dossier()
        Dim objShell,objFolder,Message
        Message = "Veuillez sélectionner un dossier pour renommer ses fichiers avec underscrore"
        Set objShell = CreateObject("Shell.Application")
        Set objFolder = objShell.BrowseForFolder(0,Message,1,"c:\Programs")
        If objFolder Is Nothing Then
            Wscript.Quit
        End If
        Parcourir_Dossier = objFolder.self.path
    end Function
    '*********************************************************************************************
    Function GetNameFile(sFile)
        Dim  Tab
        Tab = Split(sFile,"\")
        GetNameFile = Tab(UBound(Tab))
    End Function
    '*********************************************************************************************
    Sub RenameMyFile(File1,File2)
        Dim Ws,Command,Execution
        Set Ws = CreateObject("WScript.Shell")
        Command = "Cmd /c Rename "& DblQuote(File1) &" "& DblQuote(File2) &""
        Execution = Ws.Run(Command,0,False)
    End Sub
    '*********************************************************************************************
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '*********************************************************************************************

  6. #6
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Non tu ne t'es pas trompé dans le chemin d'accès, j'avais pas pris en compte le faite qu'il pouvait y avoir des espaces dans ton chemin d'accès. Tu doit avoir un dossier "C:\Users\Moi\Documents\Dossier_test" qui a dût être créé, pense à le supprimer.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "C:\Users\Moi\Documents\Dossier test" %%a in (*.pdf) do (
      set "path=%%~nxa"
      set "path=!path: =_!"
      copy /v "%%~a" "%%~dpa!path!"
      del /q "%%~a"
    )
    pause

    @hackoofr: petit gourmand
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  7. #7
    Membre confirmé
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Avril 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Avril 2012
    Messages : 113
    Par défaut
    Merci beaucoup à tous les deux pour votre aide... mais ça ne va toujours pas Désolée en plus je ne fais pas avancer les choses, c'est quasiment la première fois que j'utilise des batch et vbscript On peut dire que je découvre leur existence justement parce que je cherchais à éviter un travail long et répétitif.


    Pour la solution de hackoofr : j'ai bien une fenêtre qui s'ouvre et me demande de sélectionner un dossier. Je prends le dossier de test, mais alors j'ai juste une autre fenêtre qui s'ouvre avec le chemin d'accès du premier document affiché et un bouton "OK". Je clique, re-fenêtre avec le chemin d'accès, je re-clique, fenêtre avec le chemin d'accès du deuxième doc...

    Pour la solution de InitSreen : le PDF "Test 1" a disparu du dossier de test, mais "Test 2" s'est bien transformé en "Test_2".


    En espérant que vous aurez encore la patience de vous pencher sur mon problème...

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

Discussions similaires

  1. Remplacer espaces par _ dans répertoires et fichiers
    Par fanch35 dans le forum Langage
    Réponses: 14
    Dernier message: 25/06/2012, 14h57
  2. remplacer espace par tiret dans formulaire
    Par referenceur-tv dans le forum Langage
    Réponses: 17
    Dernier message: 03/06/2008, 14h52
  3. Débutant: Remplacer #ref! par 0 dans mon fichier xls
    Par billy78 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 11/06/2007, 15h41
  4. [VBA-E]Remplacement virgules par tabulation dans un fichier texte
    Par Mlezen dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2006, 14h03
  5. Comment remplacer un espace par underscore?
    Par Jim_Nastiq dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2006, 16h13

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