MAKEMSI quickly and reliably creates MSI files in a non-programmatic way
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
[Bottom][Contents][Prev]: Special Characters (tabs etc)[Next]: Sweep (Execute command(s) per File or Directory)
Have your say! Join the MAKEMSI discussion list or view archive! Suggest improvements. No question too simple or too complex.
\->Tips and Tricks->Batch Files->Batch File Tips and Tricks->Subroutines (common code)

Subroutines (common code)

The following is a common way of having some common code (parameters are passed as environment variables):

...
set ReturnAddress=Return1
goto SomeSubroutine
:Return1
set ReturnAddress=Return2
goto SomeSubroutine
:Return2
...
goto :EOF

::::::::::::::::::::::::::
:SomeSubroutine
::::::::::::::::::::::::::
    echo *** In Subroutine ***
    goto %ReturnAddress%

A newer method to do the same thing is:

...
call :SomeSubroutine
call :SomeSubroutine
...
goto :EOF

::::::::::::::::::::::::::
:SomeSubroutine
::::::::::::::::::::::::::
    echo *** In Subroutine ***
    goto :EOF

Note that you may wish to read/write to an environment variable you have the name for, if so have a look at the Indirect Access to Environment Variables (by reference) tip.

A Real Example

@echo off
setlocal
set BatchFileDir=%~dp0
cls

CALL :FIND_EXE "Exiv2Exe" "exiv2.exe"
   if     "%Exiv2Exe%" == "" echo "exiv2.exe" not found
   if not "%Exiv2Exe%" == "" echo "exiv2.exe" found full name: "%Exiv2Exe%"
goto :EOF

@rem ++++++++++++++++++++++++++ v11.366
:FIND_EXE
@rem ++++++++++++++++++++++++++
   set Look4Exe=%~2
   set   FndExe=
   if exist "%BatchFileDir%%Look4Exe%"                                    set FndExe=%BatchFileDir%%Look4Exe%
   if "%FndExe%" == "" if exist "%Look4Exe%" for %%f in ("%Look4Exe%") do set FndExe=%%~ff
   if "%FndExe%" == ""   for %%f in ("%Look4Exe%") do                     set FndExe=%%~$PATH:f
   set %~1=%FndExe%
   goto :EOF


Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.Please email me any feedback, additional information or corrections.
See this page online (look for updates)

[Top][Contents][Prev]: Special Characters (tabs etc)[Next]: Sweep (Execute command(s) per File or Directory)


MAKEMSI© is (C)opyright Dennis Bareis 2003-2008 (All rights reserved).
Saturday May 28 2022 at 3:11pm
Visit MAKEMSI's Home Page
Microsoft awarded me an MVP (Most Valuable Professional award) in 2004, 2005, 2006, 2007, 2008 & 2009 for the Windows SDK (Windows Installer) area.