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 :

Ne pas renommer les fichiers avec extension .bat


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Ne pas renommer les fichiers avec extension .bat
    Bonjour!

    J'ai un script en batch pour renommer des fichiers de différentes extensions dans un répertoire à partir du fichier names.txt.

    Problème: Le script en question renomme aussi les fichiers avec extension .bat

    Question: Que dois-je ajouter dans le script ci-dessous pour ignorer les fichiers .bat ?

    Remarque: Même le fichier names.txt est renommé avec le lot

    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
    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION
    CHCP 1252
     
    rem Load the list of new filenames
    set i=0
    for /F "delims=" %%a in (names.txt) do (
       set /A i+=1
       set "newname[!i!]=%%a"
    )
    rem Do the rename:
    set i=0
    for /F "delims=" %%a in ('dir /b /o:n *.*') do (
       set /A i+=1
       for %%i in (!i!) do ren "%%a" "!newname[%%i]!"
    )


    Merci de bien vouloir m'aider.

  2. #2
    Expert éminent

    Pouvez-vous poster le contenu du fichier names.txt ?
    Sinon, tester cette modification pour exclure les fichiers avec les extensions .bat et .txt

    Code BAT :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
    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION
    CHCP 65001>Nul
     
    set i=0
    for /F "delims=" %%a in (names.txt) do (
       set /A i+=1
       set "newname[!i!]=%%a"
    )
     
    Set i=0
    for /F "delims=" %%a in ('dir /B /A-D /o:n *.*') do (
        Set /A i+=1
        for %%i in (!i!) do (
            If not [%%~xa] EQU [.bat] (
                If not [%%~xa] EQU [.txt] (
                    echo ren "%%a" "!newname[%%i]!"
                )
            )
        )
    )
    pause

  3. #3
    Nouveau membre du Club
    Bonjour hackoofr

    Le fichier names.txt contient une liste de fichiers de différentes extensions. Cette liste va me servir à renommer des fichiers.

    Votre script me convient. Merci

    Autre chose

    J'ai modifié le début du script pour pouvoir traiter n'importe quel nom de fichier.txt

    Avant:

    Code Batch :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set i=0
    for /F "delims=" %%a in (names.txt) do (
       set /A i+=1
       set "newname[!i!]=%%a"
    )


    Après:

    Code Batch :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set /p name=^> 
    set i=0
    for /f "delims=" %%a in (%name%.txt) do (
        set /A i+=1
        set "newname[!i!]=%%a"
    )



    Problème:

    Si le fichier.txt (par exemple, names.txt a des espaces comme my list of names.txt) le script ne renomme aucun fichier.

    Que dois-je ajouter pour que cela fonctionne ?

    Je sais qu'il faut ajouter des guillemets entre un nom avec 1 ou des espaces ( "my list" )

    J'ai essayé mais je n'y arrive pas.

    Merci de bien vouloir m'aider.

###raw>template_hook.ano_emploi###