суббота, 7 мая 2011 г.

Cmd: Backup/Clear/Restore environment variables

Публикация в первую очередь будет интересна тем, кто использует WDK/DDK для сборки чего-либо (например, драйверов). Но возможно пригодится ещё кому-то.

Проблема

При сборке из командной строки setenv.bat устанавливает переменные окружения таким образом что повторный вызов этого командного файла генерирует сообщение:
ERROR: This window already has the DDK build environment set.  Please open 
       a new window if you want to change or reset your build environment.
Как правило, для сборки под несколько платформ из одного командного файла нужно создавать дополнительные скрипты, что не всегда удобно.

Решение

Не секрет что setenv.bat устанавливает нужным образом переменные окружения для утилиты build.exe. Т.е. для того что-бы можно было повторно вызвать setenv.bat нужно сохранить переменные окружения до вызова этого скрипта и потом восстановить.
Ниже приведён рабочий командный файл с комментариями, которые следует заменить необходимыми действиями:
@echo off

echo Backup environment variables
echo.
set RestoreEnv=%TEMP%\%RANDOM%
if exist "%RestoreEnv%" del "%RestoreEnv%"
for /f "delims==" %%a in ('set') do set %%a>>"%RestoreEnv%"

:: Do something useful here 1
:: For example, call setenv.bat and build.exe

echo.
echo Clean/Restore environment variables
echo.
for /f "delims==" %%a in ('set') do if /i not %%a==RestoreEnv set %%a=
for /f "delims=" %%a in (%RestoreEnv%) do set %%a
del %RestoreEnv%

:: Do something useful here 2
:: For example, call setenv.bat and build.exe again

echo on

Комментариев нет:

Отправить комментарий