Batch file to run the most recent vsvars32.bat
Posted by jpluimers on 2016/06/28
The below batch file finds and runs the latest vsvars32.bat on a system.
vsvars32.bat initializes the path and other environment variables to run Visual Studio and command-line tools (like csc.exe, xsd.exe, editbin.exe).
The batch file employs a few tricks from:
- EnableDelayedExpansion | Windows CMD | SS64.com.
- Windows batch: how to assign variable with dynamic name? – Stack Overflow.
- batch file – Assign variables past endlocal in a loop – Stack Overflow.
:: Run the most recent vsvars32.bat :: test these environment variables that have 110 or 120 in them (future enhancements: support more Visual Studio versions): :: Visual Studio .NET 2002: VS70COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio .NET\Common7\Tools\ :: Visual Studio .NET 2003: VS71COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\Tools\ :: Visual Studio 2005: VS80COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\ :: Visual Studio 2008: VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\ :: Visual Studio 2010: VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\ :: Visual Studio 2012: VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\ :: Visual Studio 2013: VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\ :: VS130COMNTOOLS was skipped: http://www.neowin.net/forum/topic/1215607-visual-studio-13-to-be-skipped-vnext-to-be-v14/ :: Visual Studio 2015: VS130COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\ :: They contain `vsvars32.bat` which will update the `PATH` so it includes where `xsd.exe`, `csc.exe`, `editbin.exe` and others reside :: Different examples: https://github.com/noop-dev/c-cgdk/blob/master/compile-vscpp.bat :: and https://code.google.com/p/xvid4psp/source/browse/trunk/bin/4Gb+patcher.bat :: or give it a go for any version: http://chess.eecs.berkeley.edu/ptexternal/src/ptII/ptolemy/actor/lib/fmi/fmus/template/sources/build_fmu.bat setlocal enabledelayedexpansion :: delayed expansion allows for the exclamation marks :: see http://ss64.com/nt/delayedexpansion.html :: see http://stackoverflow.com/questions/22857407/windows-batch-how-to-assign-variable-with-dynamic-name for %%v in (70 71 80 90 100 110 120 130) do if not [!VS%%vCOMNTOOLS!]==[] set VSCOMNTOOLS=!VS%%vCOMNTOOLS! :: http://stackoverflow.com/questions/28682268/assign-variables-past-endlocal-in-a-loop endlocal & call :do call "%VSCOMNTOOLS%vsvars32.bat" goto :eof :do echo %* %* goto :eof
–jeroen
Leave a Reply