Récupérer une partie d'un nom de fichier pour l'exploiter dans une variable
Bonjour à tous,
je débute un peu en scripting et je cherche à automatiser le plus possible la mise à jour de certaines applications par GPO, notamment Firefox que je vais prendre ici en exemple.
J'ai écris un petit script qui fonctionne très bien mais j'aimerai le faire évoluer.
Voici le script aujourd'hui :
Code:
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
@ECHO off
REM **** Indiquer ici la version de Firefox a installer.
REM **** Ce numero est verifie au demarrage de l'ordinateur.
REM **** Le fait de changer le numero provoquera une mise a jour.
SET VERSION=63.0
REM **** Indiquer ici le chemin complet vers l'executable d'installation de Firefox
SET INSTALLSERVER=\\mon.serveur\mon.dossier\MozillaFirefox
REM **** Indiquer ici le chemin complet vers le fichier de configuration INI
SET INIFILE=\\mon.serveur\mon.dossier\MozillaFirefox\MozillaFirefox.ini
REM **** ================================= ****
REM **** NE PAS TOUCHER AU CODE CI-DESSOUS ****
REM **** ================================= ****
REM **** Detection de la precedente version x86 de Firefox sur le poste
IF EXIST "%PROGRAMFILES(X86)%\Mozilla Firefox\uninstall\helper.exe" GOTO :x86Uninstall
IF NOT EXIST "%PROGRAMFILES(X86)%\Mozilla Firefox\uninstall\helper.exe" GOTO :x64CheckVersion
:x64CheckVersion
REM **** Detection de la version x64 de Firefox si presente sur le poste
IF EXIST "%PROGRAMFILES%\Mozilla Firefox\%VERSION%.txt" GOTO :end1
IF NOT EXIST "%PROGRAMFILES%\Mozilla Firefox\%VERSION%.txt" GOTO :x64Install
:x86Uninstall
REM **** Desinstallation de la precedente version x86 de Firefox
ECHO Ancienne version x86 de Firefox detectee.
ECHO Desinstallation en cours...
taskkill.exe /f /im firefox.exe
"%PROGRAMFILES(X86)%\Mozilla Firefox\uninstall\helper.exe" -ms
ECHO Desinstallation de la precedente version x86 de Firefox termine.
GOTO :x64Install
:x64Install
REM **** Installation de la nouvelle version x64 de Firefox
ECHO Installation de la nouvelle version de Firefox en cours...
"%INSTALLSERVER%\Firefox Setup %VERSION%.exe" /S /INI=%INIFILE%
ECHO %VERSION% > "%PROGRAMFILES%\Mozilla Firefox\%VERSION%.txt"
ECHO Installation de la nouvelle version de Firefox terminee.
ECHO Copie des fichiers de config dans le dossier local...
XCOPY %INSTALLSERVER%\autoconfig.js "%PROGRAMFILES%\Mozilla Firefox\defaults\pref" /C /Y
XCOPY %INSTALLSERVER%\mozilla.cfg "%PROGRAMFILES%\Mozilla Firefox" /C /Y
ECHO Copie des fichiers de config dans le dossier local terminee.
GOTO :end2
:end1
ECHO Derniere version de Firefox deja present, installation non necessaire.
GOTO :eof
:end2
ECHO Fin de l'installation.
GOTO :eof
:eof |
En gros :
- je renseigne manuellement au début de mon script le numéro de version de Firefox à installer dans la variable %VERSION%
- je demande au script de vérifier la présence d'un fichier spécifique nommé depuis cette fameuse variable créé lors d'une précédente exécution :
si le fichier est présent = pas d'installation
si le fichier n'est pas présent = installation
- une fois l'installation terminée, le script créé un fichier nommé avec le numéro de version en cours.
J'aimerai que mon script lise le nom du fichier exécutable se trouvant dans le dossier et récupère le numéro de version présent dans le nom pour le mettre dans la variable %VERSION% sachant que :
- le nom de l'exécutable peut se présenter comme ceci : Firefox Setup 63.0.exe ou Firefox Setup 63.0.1.exe
- il faut donc que le script récupère les caractères situés entre les chaines "Firefox Setup " et ".exe"
- il n'y aura qu'un exécutable dans le dossier : on supprime l'ancien exécutable lorsque l'on place le nouveau
- le reste du script doit fonctionner comme il fonctionne maintenant : création d'un fichier nommé avec le numéro de version présent dans la variable %VERSION% qui servira de condition à l'installation du programme.
En fouillant à droite et à gauche, j'arrive à lister correctement le contenu de mon répertoire en affichant que ce qui m'intéresse avec ceci :
Code:
dir /b | findstr Firefox.Setup
Mais c'est tout...
Pouvez-vous m'aider ?
Merci d'avance ! :)