Exposé du problème :
Je récupère des mises à jour (19 fichiers) nommés selon le principe nod[0x????].nup où [0x????] est un nombre hexadécimal de 4 chiffres aléatoire dans un dossier Updfiles.
Je souhaite les renommer en fonction de la chaine de caractères trouvée dans leur contenu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Set "source=%ProgramFiles%\Eset\ESET Online Scanner\Modules\data\updfiles\" dir /A-D /B "%Source%*.nup"
Exemple : la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Colonne 1 : chaine de caractères de recherche | Colonne 2 : nom du fichier destination LOADER0 em000_32_l0.nup PERSEUS0 em001_32_l0.nup PERSEUS1 em001_32_l1.nup ENGINE0 em002_32_l0.nup ENGINE1 em002_32_l1.nup ENGINE2 em002_32_l2.nup ARCHIVES0 em003_32_l0.nup ADVHEUR0 em004_32_l0.nup ADVHEUR1 em004_32_l1.nup CLEANER0 em005_32_l0.nup CLEANER1 em005_32_l1.nup CLEANER2 em005_32_l2.nup ANTISTEALTH0 em006_32_l0.nup ANTISTEALTH1 em006_32_l1.nup ANTISTEALTH2 em006_32_l2.nup
retourne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pushd "%Source%" findstr /R "ENGINE[0-2]" *.nup popd
avec ma table précédente, le 1er fichier nod156A.nup doit être renommé en em002_32_l0.nupnod156A.nup:name=ENGINE0
nod284E.nup:name=ENGINE1
nod504C.nup:name=ENGINE2
Je souhaite trouver le code le plus concis possible pour faire cette opération sur les 19 fichiers.
Mon code actuel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 @echo off &Setlocal enableextensions Set "source=%ProgramFiles%\Eset\ESET Online Scanner\Modules\data\updfiles\" set "filtre=*.nup" for /f "skip=1 tokens=1-2 delims= " %%a in ('findstr /R "_32_l[0-2]*" %~s0') do ( for /f "tokens=*" %%c in ('dir /A-D /B "%source%*.nup"') do ( for /f "tokens=*" %%z in ('findstr /R "%%a" "%source%%%c"') do ( @echo found: %%a in %%c &pushd "%source%" &echo.ren %%c %%b &popd ) ) ) goto :eof [TABLE] LOADER0 em000_32_l0.nup PERSEUS0 em001_32_l0.nup PERSEUS1 em001_32_l1.nup ENGINE0 em002_32_l0.nup ENGINE1 em002_32_l1.nup ENGINE2 em002_32_l2.nup ARCHIVES0 em003_32_l0.nup ADVHEUR0 em004_32_l0.nup ADVHEUR1 em004_32_l1.nup CLEANER0 em005_32_l0.nup CLEANER1 em005_32_l1.nup CLEANER2 em005_32_l2.nup ANTISTEALTH0 em006_32_l0.nup ANTISTEALTH1 em006_32_l1.nup ANTISTEALTH2 em006_32_l2.nup
Partager