Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to reset environment after running vcvars32.bat

I'm writing a batch file to run some builds using Visual C++. I would like to "undo" the vsvars32.bat/vcvarsXX.bat changes at the end of the script so that I leave the environment unchanged from before the script ran.

Example 1 - using vsvars32.bat

call %VS100COMNTOOLS%vsvars32.bat
devenv myProject.sln /Build "Debug|Win32"
:: Now undo vsvars32.bat

Example 2 - using vcvars32.bat and vcvars64.bat

<path to VC bin>vcvars32.bat
:: cmd line build calls for 32 bit application
:: Now undo vcvars32.bat

<path to VC bin>amd64\vcvars64.bat
:: cmd line build calls for 64 bit application
:: Now undo vcvars64.bat

Any suggestions?

like image 925
BeReal82 Avatar asked Dec 21 '22 09:12

BeReal82


1 Answers

The solution is simple - SETLOCAL coupled with ENDLOCAL. Type HELP SETLOCAL or HELP ENDLOCAL to get more info on usage.

Example 1:

setlocal
call %VS100COMNTOOLS%vsvars32.bat
devenv myProject.sln /Build "Debug|Win32"
endlocal

Example 2:

setlocal
<path to VC bin>vcvars32.bat
:: cmd line build calls for 32 bit application
endlocal

setlocal    
<path to VC bin>amd64\vcvars64.bat
:: cmd line build calls for 64 bit application
endlocal
like image 198
dbenham Avatar answered Jan 02 '23 23:01

dbenham