Bonjour,

Je fais un script pour extraire la version d'un programme installé, cela fonctionne très bien si le programme en question se trouve dans "programfiles" mais plante si c'est en programfiles (x86)

Mon code :
Code Batch : 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
set FILENAME="vlc.exe"
set SOFT=VLC
call :INSTALL
 
set FILENAME="Firefox.exe"
set SOFT=Firefox
call :INSTALL
 
:INSTALL
set FILEPATH=
FOR /F "delims=" %%f  in ('dir /S /B %FILENAME%') do set FILEPATH="%%f"
echo Chemin : %FILEPATH%
 
IF NOT '%FILEPATH%'=='' (echo Fichier Trouve : %FILEPATH%) else (
Fichier NON Trouve
GOTO :suite)
 
for /f "tokens=*" %%a in ('powershell "(gi '%FILEPATH%').versioninfo.Fileversion"') do set VERS=%%a
echo Version installee : %SOFT% %VERS%
:suite
pause
GOTO :eof

L'erreur survient ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for /f "tokens=*" %%a in ('powershell "(gi '%FILEPATH%').versioninfo.Fileversion"') do set VERS=%%a
quand le FILEPATH est "c:\programfiles (x86)\mozilla\firefox.exe" ce ne marche pas et fonctionne si le FILEPATH est "c:\programfiles\VideoLAN\VLC\vlc.exe".

Je sais aussi que cela fonctionne si le FILEPATH est "%ProgramFiles(x86)%...." ou "%ProgramFiles%...."

A ce stade je bloque, j'avais pensé à un remplacement de chaine mais j'ai pas reussi.

Quelle solution préconisez-vous ?

Merci à tous