Sunday, November 15, 2009

Setting Windows Environment Variables With SETX

User specific environment variables can be set from My computer -> properties -> advanced -> environment variables. But when you want to do it from script, you need another way. You could perhaps create a script and make shortcut to start menu -> propgrams -> startup. Use folder C:\Documents and Settings\All Users\Start Menu\Programs\Startup, if you want to make it available for all users.

From the command line use setx.exe which is available in Windows 2003, XP, Vista, Windows 7 and up. With it you can set environment variables from scripts so that those settings are visible also outside of the executing script. To view setx help type:
setx /?
SETX can be used to set values in the environment of the machine or currently logged on user using one of three modes - command line, registry and file mode.
  • Command Line Mode: setx variable value [-m]
    Optional Switches:
    -m - Set value in the Machine environment. Default is User.
  • Registry Mode: setx variable -k hive\key\...\value
    Optional Switches:
    -m - Set value in the Machine environment. Default is User.
  • File Mode: setx variable -f file {-a x,y | -r x,y "string"} [-d d] [-x] [-m]
    Required Switches:
    -f <file> - Specify file name to use
    -a x,y - Specify absolute coordinates and offset
    -r x,y "string" - Specify coordinates and offset relative to string

    Optional Switches:
    -d ,:\ etc. - Specify additional delimiters
    -x - Displays file coordinates. Switches -a -r -e ignored
    -m - Set value in the Machine environment. Default is User.
SETX Examples
For the file type examples you must first create the file that you wish to parse by using "command > filename" i.e. ipconfig > ipconfig.out.

IMPORTANT: SETX writes variables to the master environment in the registry. Variables set using SETX are only available in future command windows and not in the current command window.

SETX Command Line Examples
  • SETX MACHINE DELL - Sets value of MACHINE to be DELL in the users environment.
  • SETX MACHINE "DELL COMPUTER" -m - Sets value of MACHINE to be "DELL COMPUTER" in the machine environment.
  • SETX MYPATH %PATH% - Sets the value of MYPATH to the CURRENT value of the PATH environment variable.
  • SETX MYPATH ~PATH~ - Sets the value of MYPATH to ALWAYS be equal to the value of the PATH environment variable even in the event that the PATH variable changes.
SETX Registry Examples
  • SETX TZONE -k HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInforation\StandardName - Sets the value of TZONE to the above key ie. "Central Standard Time"
  • SETX BUILD -k "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\urrentBuildNumber" - Sets the value of BUILD to the current Windows NT build ie. "1314"
    Note: Quotes must be used because of the embedded space in "Windows NT".
SETX File Examples
  • SETX VAR -f ipconfig.out -x - Displays the coordinates for the contents of the file "ipconfig.out".
  • SETX IPADDR -f ipconfig.out -a 5,11 - Finds value at absolute offset 5,11 of the file ipconfig.out and sets IPADDR to the IP Address (absolute offset 5,11).
  • SETX OCTET1 -f ipconfig.out -a 5,3 -d - Finds value at absolute offset 5,3 and uses "." as an additional delimiter.  Sets OCTET1 to the first octet of the IP Address
  • SETX IPGATEWAY -f ipconfig.out -r 0,7 "Gateway" - Finds value at relative offset 0,7 to the keyword "Gateway" and sets IPGATEWAY to the first octet of the IP Address

No comments:

Post a Comment