Question

On my computer, the environment variables %TMP% and %TEMP% both point to the same location.

Are those for backward compatibility issues only, or is there a real difference?

Was it helpful?

Solution

It is for compatibility. It goes all the way back to DOS. Since there were no standards, some DOS (and Win 3.x) applications would look for the %TMP% environment variable and others would look for %TEMP%. You were best off if you set both of them in the AUTOEXEC.BAT file.

Windows NT set both of them automatically just to make sure all of the apps continued to work OK. %TEMP% is the standard now, but %TMP% lives on.

EDIT: Looks like Richard already mentioned the DOS aspect in a comment.

OTHER TIPS

To complete the other answers:

Environment variable

in MS-DOS 5 (1991-1994) %TEMP% sometimes pointed to C:\DOS so removing all files in %TEMP% would cause great problems to say the least.

http://www.operating-system.org/betriebssystem/bsgfx/microsoft/msdos500-scr-01.png

I think only for compatibility, as I could see in Windows starting from NT 4.0 both variables were targeted to the same location in %WinDir%\Temp\

Also I never saw using %TMP%, every time it was talking about %TEMP%.

Raymond Chen talks about the historical use of TMP and TEMP, and says this specifically about Windows:

For whatever reason, the original authors of the Get­Temp­File­Name function chose to look for TMP before looking for TEMP.

The rest of the article is worth a read in explaining the historical use of both in DOS. It sounds like DOS preferred TEMP semi-officially, rather than TMP, but third-party programmers were free to use what they liked, particularly given the lack of the standard API functions that Windows has.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top