13

I'm working on some .bat stuff created in a legacy application, which uses many environment variables. I need to know exactly what is every one of them (%windir%, %os%, etc.).

So I need the official Microsoft Documentation about the System Environment Variables of Windows (at least from the NT version).

I've reading some sites with partial information (there are variables absent, such as %os%), so I really want to look at the Official info.

Searching with Google, Bing and inside the MSDN site give just reports about one or other variable, but no a comprehensive and centralized list of all.

Anybody knows where is that documentation available?

fixer1234
  • 28,064

4 Answers4

4

While not official the best functional reference I've seen, that has been reliable and kept up to date for many years, is SS64 http://ss64.com/nt/syntax-variables.html. It includes undocumented variables and OS version specific info.

matt wilkie
  • 5,324
3

Site? Maybe not? Try this link. The list even breaks it down to what OS can use it. The variable will look a little different. That is only because it is missing the percent signs that are at the beginning and end.

Still not happy? Try this opening Command Prompt and type set and hit enter. It will list all the variables. As with the site listed above, the variable here will also look a little different.

SgtOJ
  • 7,397
1

Although potentially not as comprehensive as might be desired, this is official documentation of a significant amount of default Windows environment variables that contain paths:

Variables that are processed for the operating system and in the context of each user

Variable Explanation
ALLUSERSAPPDATA Same as CSIDL_COMMON_APPDATA.
ALLUSERSPROFILE Refers to %PROFILESFOLDER%\Public or %PROFILESFOLDER%\all users.
COMMONPROGRAMFILES Same as CSIDL_PROGRAM_FILES_COMMON.
COMMONPROGRAMFILES(X86) Refers to the C:\Program Files (x86)\Common Files folder on 64-bit systems.
CSIDL_COMMON_ADMINTOOLS Version 10.0. The file-system directory that contains administrative tools for all users of the computer.
CSIDL_COMMON_ALTSTARTUP The file-system directory that corresponds to the non-localized Startup program group for all users.
CSIDL_COMMON_APPDATA The file-system directory that contains application data for all users. A typical path Windows is C:\ProgramData.
CSIDL_COMMON_DESKTOPDIRECTORY The file-system directory that contains files and folders that appear on the desktop for all users. A typical path is C:\Users\Public\Desktop.
CSIDL_COMMON_DOCUMENTS The file-system directory that contains documents that are common to all users. A typical path is C:\Users\Public\Documents.
CSIDL_COMMON_FAVORITES The file-system directory that serves as a common repository for favorites common to all users. A typical path is C:\Users\Public\Favorites.
CSIDL_COMMON_MUSIC The file-system directory that serves as a repository for music files common to all users. A typical path is C:\Users\Public\Music.
CSIDL_COMMON_PICTURES The file-system directory that serves as a repository for image files common to all users. A typical path is C:\Users\Public\Pictures.
CSIDL_COMMON_PROGRAMS The file-system directory that contains the directories for the common program groups that appear on the Start menu for all users. A typical path is C:\ProgramData\Microsoft\Windows\Start Menu\Programs.
CSIDL_COMMON_STARTMENU The file-system directory that contains the programs and folders that appear on the Start menu for all users. A typical path in Windows is C:\ProgramData\Microsoft\Windows\Start Menu.
CSIDL_COMMON_STARTUP The file-system directory that contains the programs that appear in the Startup folder for all users. A typical path is C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup.
CSIDL_COMMON_TEMPLATES The file-system directory that contains the templates that are available to all users. A typical path is C:\ProgramData\Microsoft\Windows\Templates.
CSIDL_COMMON_VIDEO The file-system directory that serves as a repository for video files common to all users. A typical path is C:\Users\Public\Videos.
CSIDL_DEFAULT_APPDATA Refers to the Appdata folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_LOCAL_APPDATA Refers to the local Appdata folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_COOKIES Refers to the Cookies folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_CONTACTS Refers to the Contacts folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_DESKTOP Refers to the Desktop folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_DOWNLOADS Refers to the Downloads folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_FAVORITES Refers to the Favorites folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_HISTORY Refers to the History folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_INTERNET_CACHE Refers to the Internet Cache folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_PERSONAL Refers to the Personal folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_MYDOCUMENTS Refers to the Documents folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_MYPICTURES Refers to the Pictures folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_MYMUSIC Refers to the Music folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_MYVIDEO Refers to the Videos folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_RECENT Refers to the Recent folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_SENDTO Refers to the Send To folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_STARTMENU Refers to the Start Menu folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_PROGRAMS Refers to the Programs folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_STARTUP Refers to the Startup folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_TEMPLATES Refers to the Templates folder inside %DEFAULTUSERPROFILE%.
CSIDL_DEFAULT_QUICKLAUNCH Refers to the Quick Launch folder inside %DEFAULTUSERPROFILE%.
CSIDL_FONTS A virtual folder containing fonts. A typical path is C:\Windows\Fonts.
CSIDL_PROGRAM_FILESX86 The Program Files folder on 64-bit systems. A typical path is C:\Program Files(86).
CSIDL_PROGRAM_FILES_COMMONX86 A folder for components that are shared across applications on 64-bit systems. A typical path is C:\Program Files(86)\Common.
CSIDL_PROGRAM_FILES The Program Files folder. A typical path is C:\Program Files.
CSIDL_PROGRAM_FILES_COMMON A folder for components that are shared across applications. A typical path is C:\Program Files\Common.
CSIDL_RESOURCES The file-system directory that contains resource data. A typical path is C:\Windows\Resources.
CSIDL_SYSTEM The Windows System folder. A typical path is C:\Windows\System32.
CSIDL_WINDOWS The Windows directory or system root path. This value corresponds to the %WINDIR% or %SYSTEMROOT% environment variables. A typical path is C:\Windows.
DEFAULTUSERPROFILE Refers to the value in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList [DefaultUserProfile].
PROFILESFOLDER Refers to the value in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList [ProfilesDirectory].
PROGRAMFILES Same as CSIDL_PROGRAM_FILES.
PROGRAMFILES(X86) Refers to the C:\Program Files (x86) folder on 64-bit systems.
SYSTEM Refers to %WINDIR%\system32.
SYSTEM16 Refers to %WINDIR%\system.
SYSTEM32 Refers to %WINDIR%\system32.
SYSTEMDRIVE The drive that holds the Windows folder. This value is a drive name and not a folder name (C: not C:\).
SYSTEMPROFILE Refers to the value in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-18 [ProfileImagePath].
SYSTEMROOT Same as WINDIR.
WINDIR Refers to the Windows folder located on the system drive.

Variables that are recognized only in the user context

Variable Explanation
APPDATA Same as CSIDL_APPDATA.
CSIDL_ADMINTOOLS The file-system directory that is used to store administrative tools for an individual user. The Microsoft Management Console (MMC) saves customized consoles to this directory, which roams with the user profile.
CSIDL_ALTSTARTUP The file-system directory that corresponds to the user's non-localized Startup program group.
CSIDL_APPDATA The file-system directory that serves as a common repository for application-specific data. A typical path is C:\Users\<username>\AppData\Roaming.
CSIDL_BITBUCKET The virtual folder that contains the objects in the user's Recycle Bin.
CSIDL_CDBURN_AREA The file-system directory acting as a staging area for files waiting to be written to CD. A typical path is C:\Users\<username>\AppData\Local\Microsoft\Windows\MasteredBurning\Disc Burning.
CSIDL_CONNECTIONS The virtual folder representing Network Connections that contains network and dial-up connections.
CSIDL_CONTACTS This value refers to the Contacts folder in %CSIDL_PROFILE%.
CSIDL_CONTROLS The virtual folder that contains icons for the Control Panel items.
CSIDL_COOKIES The file-system directory that serves as a common repository for Internet cookies. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Cookies.
CSIDL_DESKTOP The virtual folder representing the Windows desktop.
CSIDL_DESKTOPDIRECTORY The file-system directory used to physically store file objects on the desktop, which shouldn't be confused with the desktop folder itself. A typical path is C:\Users\<username>\Desktop.
CSIDL_DRIVES The virtual folder representing This PC that contains everything on the local computer: storage devices, printers, and Control Panel. The folder could also contain mapped network drives.
CSIDL_FAVORITES The file-system directory that serves as a common repository for the user's favorites. A typical path is C:\Users\<username>\Favorites.
CSIDL_HISTORY The file-system directory that serves as a common repository for Internet history items.
CSIDL_INTERNET A virtual folder for Internet Explorer.
CSIDL_INTERNET_CACHE The file-system directory that serves as a common repository for temporary Internet files. A typical path is C:\Users\<username>\AppData\Local\Microsoft\Windows\Temporary Internet Files
CSIDL_LOCAL_APPDATA The file-system directory that serves as a data repository for local, non-roaming applications. A typical path is C:\Users\<username>\AppData\Local.
CSIDL_MYDOCUMENTS The virtual folder representing the Documents folder.A typical path is C:\Users\<username>\Documents.
CSIDL_MYMUSIC The file-system directory that serves as a common repository for music files. A typical path is C:\Users\<username>\Music.
CSIDL_MYPICTURES The file-system directory that serves as a common repository for image files. A typical path is C:\Users\<username>\Pictures.
CSIDL_MYVIDEO The file-system directory that serves as a common repository for video files. A typical path is C:\Users\<username>\Videos.
CSIDL_NETHOOD A file-system directory that contains the link objects that could exist in the Network virtual folder. It isn't the same as CSIDL_NETWORK, which represents the network namespace root. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Network Shortcuts.
CSIDL_NETWORK A virtual folder representing the Network desktop item, the root of the network namespace hierarchy.
CSIDL_PERSONAL The virtual folder representing the <User> desktop item. This value is equivalent to CSIDL_MYDOCUMENTS. A typical path is C:\User\<username>\Documents.
CSIDL_PLAYLISTS The virtual folder used to store play albums, typically C:\Users\<username>\Music\Playlists.
CSIDL_PRINTERS The virtual folder that contains installed printers.
CSIDL_PRINTHOOD The file-system directory that contains the link objects that can exist in the Printers virtual folder. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Printer Shortcuts.
CSIDL_PROFILE The user's profile folder. A typical path is C:\Users\<username>.
CSIDL_PROGRAMS The file-system directory that contains the user's program groups, which are themselves file-system directories. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs.
CSIDL_RECENT The file-system directory that contains shortcuts to the user's most recently used documents. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent.
CSIDL_SENDTO The file-system directory that contains Send To menu items. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\SendTo.
CSIDL_STARTMENU The file-system directory that contains Start menu items. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu.
CSIDL_STARTUP The file-system directory that corresponds to the user's Startup program group. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.
CSIDL_TEMPLATES The file-system directory that serves as a common repository for document templates. A typical path is C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Templates.
HOMEPATH Same as the standard environment variable.
TEMP The temporary folder on the computer. A typical path is %USERPROFILE%\AppData\Local\Temp.
TMP The temporary folder on the computer. A typical path is %USERPROFILE%\AppData\Local\Temp.
USERPROFILE Same as CSIDL_PROFILE.
USERSID Represents the current user-account security identifier (SID). For example, S-1-5-21-1714567821-1326601894-715345443-1026.

However, because this documentation solely covers paths, it's not comprehensive, despite being official. The best source of the rest that I've located is probably this - it's a public document I've improved to help answer this question better:

Variables should be enclosed in %. For example, echo %TEMP% on my Windows 10 machine will result in the output %SYSTEMDRIVE%\Users\\$([Environment]::UserName)\AppData\Local\Temp. Obviously, replace $-demarcated variable acquisitions with your login username (if not using PowerShell). In most cases, the case of the variables doesn't matter, but for consistency, we display variables in upper-case (because they're meant to be constant).

Variable Default/Information
USERNAME Your user name.
USERDOMAIN The domain or machine name.
COMPUTERNAME The machine name.
NUMBER_OF_PROCESSORS The number of processors running on the machine.
DATE The current date.
TIME The current time in TIME format.
RANDOM A random number from 0 to 32767.
OS The operating system (Windows 10 still reports Windows_NT).
PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC, comma separated executable file extensions in order of precedence (left to right).
PROCESSOR_ARCHITECTURE AMD64/IA64/x86 the architecture of the current process.
PROCESSOR_IDENTIFIER Processor ID.
PROCESSOR_LEVEL Processor level.
PROCESSOR_REVISION Processor revision.
PROMPT The command prompt format (for example $P$G).
ERRORLEVEL The error value set when a program exits.
COMSPEC %SYSTEMDRIVE%\Windows\System32\cmd.exe.
LOGONSERVER \\\$Domain.
USERDOMAIN_ROAMINGPROFILE User domain associated with roaming profile.
0

No complete list either but this link may already help to detect the OS you have.

Typing set in cmd.exe for getting a list of all really used variables on your system is known I assume?!

Paul π
  • 345
Michael S.
  • 4,217