Batch: Pointer dans un répertoire voisin

dhaze Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 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.
A voir également:

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
dans la commande dir
dir /b /a-d MON_REPERTOIRE\*.tif
0
dhaze Messages postés 109 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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
il faut conserver MON_REPERTOIRE\ devant les noms
0
dhaze Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   > dubcek Messages postés 18789 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
dhaze Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   > dhaze Messages postés 109 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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637 > dhaze Messages postés 109 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