john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

BAT for loop if else functions

REM johnpfeiffer: put this .bat file and wget in %tmp% , NOTE: BAT scripting is case sensitive
REM Ensure you configure the build version to download, 32 or 64 bit, user/pass etc.
ECHO off

SET INSTALLERFILENAME=Installer_865.exe
SET VERSION=64bit


SET URL=http://10.10.10.232:8080/job/win-inception-client-wix/lastSuccessfulBuild/artifact/output/%INSTALLERFILENAME%

SET USER=qa
SET PASSWORD=password
SET SECONDS=20


REM - - - - - - - - - - - - - - - - - - - - - - - - -
REM - - MAIN  - - - - - - - - - - - - - - - - - - - -

IF NOT EXIST %tmp%\wget\wget.exe (
  ECHO Error: wget.exe does not exist
  GOTO :EOF
) ELSE (
  CALL :GETINSTALLER
)

REM Run the installer in a new cmd.exe
IF EXIST %tmp%\%INSTALLERFILENAME% (
  start %tmp%\%INSTALLERFILENAME%
)

ECHO "Waiting %SECONDS% seconds for Installer.exe to extract tmporary files"
PING -n %SECONDS% 127.0.0.1 > null


ECHO %VERSION%

IF "%VERSION%" == "64bit" (

CALL :GETMSIFILENAME64
ECHO %MSIFILENAME% 
) ELSE (

  REM 32bit is the first item in the list
  FOR /F "tokens=* delims=\ " %%X IN ('dir /b /s %tmp%\*.msi') DO ( 
    SET MSIFILENAME=%%X
    REM ONLY GET THE FIRST ITEM FROM THE LIST
    GOTO :CONTINUE
  )

:CONTINUE

)
ECHO %MSIFILENAME%


GOTO :EOF

REM either run the cmd.exe as an Administrator or use...
REM runas /u:[domain]\[user] "msiexec.exe /i [path-to-file]\[file.MSI]"

start msiexec /i %MSIFILENAME% /q

call :CLEANUP

PING -n %SECONDS% 127.0.0.1 > null
%tmp%\wget\login.bat

GOTO :EOF




REM - - - - - - - - - - - - - - - - - - - - - - - - -
REM - - FUNCTION DEFINITIONS  - - - - - - - - - - - -


:GETINSTALLER
  %tmp%\wget\wget.exe --auth-no-challenge --user=%USER% --password=%PASSWORD%  
%URL% -O %tmp%\%INSTALLERFILENAME%
GOTO :EOF


:GETMSIFILENAME64
  REM complicated way to find the last msi filename = 64bit and SET the variable
  for /f "tokens=* delims=" %%A in ('dir /b /s %tmp%\*.msi') do ( 
    SET MSIFILENAME=%%A
  )
GOTO :EOF


:CLEANUP
  ECHO "Waiting %SECONDS% seconds before taskkill /F /IM %INSTALLERFILENAME%"
  PING -n %SECONDS% 127.0.0.1 > null

  taskkill /F /IM %INSTALLERFILENAME%
  taskkill /F /IM ISBEW64.exe

  ECHO "Waiting %SECONDS% seconds before taskkill /F /IM msiexec.exe"
  PING -n %SECONDS% 127.0.0.1 > null

  taskkill /F /IM msiexec.exe
GOTO :EOF

  • « Ldap apacheds create dc ou structure
  • BAT for loop readfile increment if statements »

Published

Jan 6, 2012

Category

bat-vbs-perl

~261 words

Tags

  • bat 22
  • bat-vbs-perl 51
  • else 1
  • for 18
  • functions 7
  • if 6
  • loop 9