Batch: Pointer dans un répertoire voisin

dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'utilise ce code pour renommer des fichiers en ajoutant un terme entre parenthèses sauf s'il en existe déjà un :

for /f "tokens=1-3*delims=_" %%i in ('dir /b /a-d *.tif ^| find /v ")_"') do ren "%%i_%%j_%%k_%%l" "%%i_%%j_(AJOUT)_%%k_%%l"

Source:
NOM_000000_(EXISTE)_V1_2_A.tif
NOM_000000_(EXISTE)_V1_2_A.tif
NOM_000000_V2_2_A.tif
NOM_000000_V2_2_A.tif

Résultat:
NOM_000000_(EXISTE)_V1_2_A.tif
NOM_000000_(EXISTE)_V1_2_A.tif
NOM_000000_(AJOUT)_V2_2_A.tif
NOM_000000_(AJOUT)_V2_2_A.tif

Mais ce que je ne sais pas, c'est comment spécifier le répertoire dans lequel je veux pointer. Qui se trouve lui, au même niveau que le batch.
Et ce, sans utiliser un chemin absolu.

Où et comment placer cette formule: "MON_REPERTOIRE\*.tif" ?

Lo.

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    dans la commande dir
    dir /b /a-d MON_REPERTOIRE\*.tif
    0
  2. dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Merci pour ta réponse.
    J'avais déjà essayé comme cela, mais le résulta est étrange...

    D:\>for /F "tokens=1-3*delims=_" %i in ('dir /b /a-d MON_REPERTOIRE\*.tif | find /v ")_"') do ren "%i_%j_%k_%l" "%i_%j_(AJOUT)_%k_%l"

    D:\>ren "NOM_000000_V2_2_A.tif" "NOM_000000_(AJOUT)_V2_2_A.tif"
    Le fichier spécifié est introuvable.

    D:\>ren "NOM_000000_V2_2_B.tif" "NOM_000000_(AJOUT)_V2_2_B.tif"
    Le fichier spécifié est introuvable.

    D:\>pause
    Appuyez sur une touche pour continuer...

    Il "trouve" bien les deux fichiers qui sont à renommer,
    mais il y quelque-chose qui bloque...

    Lo.
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      il faut conserver MON_REPERTOIRE\ devant les noms
      0
      1. dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Pardon, mais je ne comprends pas trop...
        Le promt que j'ai posté ci-dessus est le résultat de ce batch :
        for /f "tokens=1-3*delims=_" %%i in ('dir /b /a-d MON_REPERTOIRE\*.tif ^| find /v ")_"') do ren "%%i_%%j_%%k_%%l" "%%i_%%j_(AJOUT)_%%k_%%l"

        Où figure bien MON_REPERTOIRE\*.tif
        0
      2. dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention   > dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention  
         
        En "extériorisant" la localisation
        cd MON_REPERTOIRE

        for /f "tokens=1-3*delims=_" %%i in ('dir /b /a-d *.tif ^| find /v ")_"') do ren "%%i_%%j_%%k_%%l" "%%i_%%j_(AJOUT)_%%k_%%l"

        Là, ça fonctionne...
        0
      3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660 > dhaze Messages postés 113 Date d'inscription   Statut Membre Dernière intervention  
         
        parce que on est dans MON_REPERTOIRE
        avec dir /b /a-d MON_REPERTOIRE\*.tif on est un répertoire au dessus, donc rename ne trouve pas les fichiers
        il faut ren "MON_REPERTOIRE\%%i_%%j_%%k_%%l" "MON_REPERTOIRE\%%i_%%j_(AJOUT)_%%k_%%l"
        0