Batch: Pointer dans un répertoire voisin

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. Contributeur
    hello
    dans la commande dir
    dir /b /a-d MON_REPERTOIRE\*.tif
    1. 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.
      1. Contributeur
        il faut conserver MON_REPERTOIRE\ devant les noms
      2. @dubcekPardon, 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
      3. @dhazeEn "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...
      4. Contributeur
        @dhazeparce 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"