Batch: Pointer dans un répertoire voisin

Fermé
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 - 23 juil. 2015 à 16:37
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 25 juil. 2015 à 15:48
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
24 juil. 2015 à 08:07
hello
dans la commande dir
dir /b /a-d MON_REPERTOIRE\*.tif
0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
24 juil. 2015 à 15:16
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
24 juil. 2015 à 16:36
il faut conserver MON_REPERTOIRE\ devant les noms
0
dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
Modifié par dhaze le 24/07/2015 à 17:22
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 mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020 > dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
24 juil. 2015 à 17:36
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615 > dhaze Messages postés 109 Date d'inscription mardi 27 septembre 2011 Statut Membre Dernière intervention 6 février 2020
25 juil. 2015 à 15:48
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