Batch som installerer den nyere versjonen av et program

stemmer
1

Jeg bruker en batch fil til stille installasjon forskjellige programmer samtidig. Det ser ut som dette (utdrag):

REM ------------------------------- ALIAS -------------------------------

SET APPS=\\ser-nas\Distribution\APPLICATIONS
SET BUREAU=C:\Users\%username%\Desktop
SET BUREAUPUBLIC=C:\Users\Public\Desktop
SET QUICKLAUNCH=C:\Users\Default\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

REM ------------------------------ VERSIONS ------------------------------

SET Version_CCleaner=504
SET Version_Firefox=36.0.4
SET Version_FlashPlayer=17x32
SET Version_LibreOffice=4.3.7
SET Version_AdobeReader=11003
SET Version_PDFCreator=2_0_2
SET Version_7Zip=920
SET Version_TightVNC=2.7.10
SET Version_VLC=2.1.5

REM ---------------------------- ARCHITECTURE ----------------------------

Set _Bitness=64
IF %PROCESSOR_ARCHITECTURE% == x86 (
  IF NOT DEFINED PROCESSOR_ARCHITEW6432 Set _Bitness=32
)

REM ---------------------------- INSTALLATION ----------------------------

echo Installation de CCleaner v%Version_CCleaner%...
start /wait %APPS%\System\Cleaners\ccsetup%Version_CCleaner%.exe /S /L=1036

echo Installation de Mozilla Firefox v%Version_Firefox%...
start /wait %APPS%\Internet\Firefox Setup %Version_Firefox%.exe -ms

echo Installation de Flash Player v%Version_FlashPlayer% pour Firefox...
start /wait %APPS%\FlashPlayer\17\Firefox\install_flashplayer%Version_FlashPlayer%_mssd_aaa_aih.exe -install

Spørsmålet mitt er ... Hvordan kan jeg skrive et skript som oppdager den nyere versjonen av hvert program, som er lagret i en mappe å installere?

Inntil nå har jeg til å oppdatere manuelt versjonsnumrene i partiet før du utfører den. Jeg ønsker partiet å finne automatisk den nyeste versjonen eksisterende i en bestemt mappe.

Takk for hjelpen.

Publisert på 05/05/2015 klokken 06:27
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Neste script kunne gi komme hint.

@ECHO OFF >NUL
SETLOCAL enableextensions
SET "APPS=\\ser-nas\Distribution\APPLICATIONS"
SET "APPS=D:\downloads"
call :getVersion Version_Gimp "%APPS%" "gimp-" "-setup-1.exe"
echo debug3 Version_Gimp=%Version_Gimp%
call :getVersion Version_CCleaner "%APPS%\System\Cleaners" "ccsetup" ".exe"
echo debug4 Version_CCleaner=%Version_CCleaner%
call :getVersion Version_Firefox  "%APPS%\Internet" "Firefox Setup " ".exe"
call :getVersion Version_FlashPlayer "%APPS%\FlashPlayer\17\Firefox" "install_flashplayer" "_mssd_aaa_aih.exe"
ENDLOCAL
goto :eof

:getVersion
:: %1 by reference call        example
:: %1 = variable name          Version_FlashPlayer
:: %2 = "setup_folder"         "%APPS%\FlashPlayer\17\Firefox"
:: %3 = "setup_exe_prefix"     "install_flashplayer"
:: %4 = "setup_exe_suffix"     "_mssd_aaa_aih.exe"
::
SETLOCAL enableextensions EnableDelayedExpansion
set "version="
echo debug1 "%~2\%~3*%~4"
FOR /F "delims=" %%G in ('dir /B /O:N "%~2\%~3*%~4" 2^>NUL') do (
    set "version=%%~G"
)
if defined version if not "%~3"=="" set "version=!version:%~3=!"
if defined version if not "%~4"=="" set "version=!version:%~4=!"
)
echo debug2 %1=%version%
ENDLOCAL&set "%1=%version%"&goto :eof

Den :getVersionprosedyren returnerer mest høy versjon i form av /O:Nbryteren på dirkommando (slags utgang ved navn); kunne ikke være tilstrekkelig for en bestemt (mer sofistikert) versjons ordningen ...

utgang :

==>D:\bat\StackOverflow\30046694.bat
debug1 "D:\downloads\gimp-*-setup-1.exe"
debug2 Version_Gimp=2.8.14
debug3 Version_Gimp=2.8.14
debug1 "D:\downloads\System\Cleaners\ccsetup*.exe"
debug2 Version_CCleaner=
debug4 Version_CCleaner=
debug1 "D:\downloads\Internet\Firefox Setup *.exe"
debug2 Version_Firefox=
debug1 "D:\downloads\FlashPlayer\17\Firefox\install_flashplayer*_mssd_aaa_aih.exe"
debug2 Version_FlashPlayer=
Svarte 05/05/2015 kl. 10:53
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more