Salut,

j'utilise un petit batch qui extrait des valeurs du registre et les affecte à des variables :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop" > path.txt
FINDSTR "Desktop" path.txt > path2.txt
FOR /F "tokens=3 delims=	" %%a IN (path2.txt) DO (SET Bureau=%%a
)
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" > path.txt
FINDSTR "Personal" path.txt > path2.txt
FOR /F "tokens=3 delims=	" %%a IN (path2.txt) DO (SET Documents=%%a
)
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Programs" > path.txt
FINDSTR "Programs" path.txt > path2.txt
FOR /F "tokens=3 delims=	" %%a IN (path2.txt) DO (SET MenuDemarrerPrograms=%%a
)
[...]
ça marche très très bien mais je trouve la forme très moyenne, et je cherche à l'optimiser en imbriquant deux boucles, l'une qui teste les valeurs, l'autre qui teste les variables. C'est à bout de force que j'en suis arrivé à cette usine à gaz qui n'a rien de comparable :

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
FOR %%I IN (
	        "Desktop"
	        "Personal"
	        "Programs"
	        "Startup"
	        "Start Menu"
	        "Favorites"
	        "Local AppData"
) DO FOR /F "tokens=3 delims=	" %%G IN ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v %%I') DO (
ECHO %%G > Path.txt
FOR /F "tokens=*" %%C IN (Path.txt) DO FOR %%A IN (
Bureau
Documents
MenuDemarrerPrograms
Demarrage
MenuDemarrer
Favoris
LocalAppData
) DO SET %%A=%%G
)
pause
le résultat a au moins le mérite d'être comique, toutefois ce code me permet de vous préciser quel type d'orientation je recherche.

Est-ce que vous auriez une suggestion qui soit à peu près dans cet esprit ?

Merci