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 :
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.
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
-
Contributeurhello
dans la commande dirdir /b /a-d MON_REPERTOIRE\*.tif
-
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.-
-
@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 -
@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... -
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"
-