What does %WinDir% mean?

L

Laurel

I got the following instructions from an MS web page for cleaning up the
COM+ registry. I don't understand the %Windir% convention. Can I do this
rename via Windows explorer? Which directory are they talking about?

1.. Rename the %WinDir%\System32\Clbcatq.dll file to
%WinDir%\System32\~Clbcatq.dll. Make sure that you include the tilde (~) at
the start of the file name.
TIA
LAS
 
B

Bert Hyman

In "Laurel"
I got the following instructions from an MS web page for cleaning up
the COM+ registry. I don't understand the %Windir% convention. Can I
do this rename via Windows explorer? Which directory are they talking
about?

That's just a shorthand notation for the drive and directory in which
Windows is installed; not everyone installs stuff in the same place.

However, it ->usually means "C:\windows".
1.. Rename the %WinDir%\System32\Clbcatq.dll file to
%WinDir%\System32\~Clbcatq.dll. Make sure that you include the tilde
(~) at the start of the file name.

And yes, you should be able to navigate to C:\windows\system32 and
rename that file using explorer.
 
V

VanguardLH

Laurel said:
I got the following instructions from an MS web page for cleaning up the
COM+ registry. I don't understand the %Windir% convention. Can I do this
rename via Windows explorer? Which directory are they talking about?

1.. Rename the %WinDir%\System32\Clbcatq.dll file to
%WinDir%\System32\~Clbcatq.dll. Make sure that you include the tilde (~) at
the start of the file name.
TIA
LAS

%varname% says to resolve the value defined for an environment variable.
Many envvars are defined by Windows, by apps that modify the PATH, or by
programs or batch files. You can see what they are by running the
following in a command shell:

set | more

You are piping the output of the 'set' command to the 'more' command
which pauses output when it exceeds the window's height. Press the
Enter key to scroll forward a line at a time, or the Spacebar to page
forward through the paused listing.

You'll notice that there is an environment variable named "windir" which
is assigned a non-blank value. When you want to use an environment
variable's value, you enclose it within percentage signs, so %windir%
return the value of the environment variable named "windir".
 
J

Jim

It is an environment variable. The % characters enable substitution of the
contents of the variable into the command line.
Jim
 
R

Roger

At Start/Run enter %WinDir% and press Enter. Explorer will open showing
you the WinDir address.
 
L

Laurel

Interesting. I think the other folks probably gave me what I needed for my
original question, but I'd like to know more about set|more. I tried it,
but found no environment variable associated with WINDIR. The last entries
in the alphabetized list were for
SYSTEMROOT,TEMP,TMP,USERDNSDOMAIN,USERDOMAIN,USERNAME,USERPROFILE,
USDEFLOGDIR and then
Protection
BLASTER.

Perhaps there really is no WINDIR variable, and it's just a convention to
use environmental variable syntax?
 
J

Jim

If there is no environment variable called windir on your system, your
system has problems. This variable is the last on the list on mine.
Jim
 
V

VanguardLH

Laurel said:
Interesting. I think the other folks probably gave me what I needed for my
original question, but I'd like to know more about set|more. I tried it,
but found no environment variable associated with WINDIR. The last entries
in the alphabetized list were for
SYSTEMROOT,TEMP,TMP,USERDNSDOMAIN,USERDOMAIN,USERNAME,USERPROFILE,
USDEFLOGDIR and then
Protection
BLASTER.

Perhaps there really is no WINDIR variable, and it's just a convention to
use environmental variable syntax?

The convention is to use %var% to return (use) the value saved in an
environment variable by that name. If the environment variable is not
define, NUL is returned.

The windir environment variable is created by Windows. It is not one
that is defined by the user or added by a program's install or
configuration. This env var has been defined going back to Windows 3.0;
see http://support.microsoft.com/kb/65662. If the env var is not
defined, some applications will fail that expect to use it to find the
path to OS files (or where they polluted the OS folder in saving files
used by that program). The windir var may not be listed when you look
at them (right-click on My Computer or open the System applet in Control
Panel, Advanced tab, Environment Variables button). If it isn't
defined, Windows creates it when you login.

Some DOS programs are known to set this variable to NUL (which
effectively deletes them). Do you run old DOS programs?

In a command shell, when you run the following command:

echo ---%windir%...

do you see something like "---C:\Windows..." or "---..."? What do you
get for output from running the following command?

set | find "windir"

That runs 'set' to output a list of environment variables which gets
piped into the find command that will list only the output lines that
have "windir" in them. If windir is defined, it will be outputted by
'set' and 'find' should find it and output the matching line which
should look like:

windir=C:\WINDOWS
 
L

Laurel

see below

VanguardLH said:
The convention is to use %var% to return (use) the value saved in an
environment variable by that name. If the environment variable is not
define, NUL is returned.

The windir environment variable is created by Windows. It is not one
that is defined by the user or added by a program's install or
configuration. This env var has been defined going back to Windows 3.0;
see http://support.microsoft.com/kb/65662. If the env var is not
defined, some applications will fail that expect to use it to find the
path to OS files (or where they polluted the OS folder in saving files
used by that program). The windir var may not be listed when you look
at them (right-click on My Computer or open the System applet in Control
Panel, Advanced tab, Environment Variables button). If it isn't
defined, Windows creates it when you login.

Some DOS programs are known to set this variable to NUL (which
effectively deletes them). Do you run old DOS programs?

In a command shell, when you run the following command:

echo ---%windir%...

I typed exactly what you show above, with dashes and dots. I just get
another directory prompt. In other words, as if I had typed nothing
do you see something like "---C:\Windows..." or "---..."? What do you
get for output from running the following command?

set | find "windir"

Same things as for echo. As if I had just pressed the enter key.
 
V

VanguardLH

Laurel said:
see below



I typed exactly what you show above, with dashes and dots. I just get
another directory prompt. In other words, as if I had typed nothing


Same things as for echo. As if I had just pressed the enter key.

Are you still in the command console after the command ends? Did you
even open a command console? Running commands in Start -> Run is *not*
opening a command console.

How did you open the command console? Did you run cmd.exe to load one?
Or use the "Command Prompt" shortcut in your Start menu? I prefaced my
instructions with "In a command shell". So how did you do that part?

The commands mentioned above issue their output to stdout (which is the
window for the command console). If you run those commands outside a
command console, they run and exit but there is no command console left
behind to see their output.
 
L

Laurel

Thanks! It was CMD vs COMMAND in the DOS window. CMD translates %windir%.
COMMAND does not.
 
P

Pegasus [MVP]

Laurel said:
Thanks! It was CMD vs COMMAND in the DOS window. CMD translates
%windir%. COMMAND does not.

Command.com is a legacy command processor from the Win9x days. You should
not use it. It's the same as DOS, which is a legacy operating system
introduced some 30 years ago. It does not exist under WinXP but the Command
Console does.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top