Forums before death by AOL, social media and spammers... "We can't have nice things"
|    alt.comp.os.windows-xp    |    Actually wasn't too bad for a M$-OS    |    17,273 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 17,179 of 17,273    |
|    Maria Sophia to Frank Slootweg    |
|    Re: Whats the %=C:% environment variable    |
|    06 Feb 26 11:35:52    |
      XPost: alt.windows7.general, alt.comp.os.windows-10       From: mariasophia@comprehension.com              Frank Slootweg wrote:       > R.Wieser wrote:       >> Hello all,       >>       >> A couple of days ago I was looking at the envronment variables, and noticed       >> a variable named "=C:", containing the current path of that drive.       >       > Current working directory, to be precise.       >       >> Can anyone tell me what it was/is used for ?       >       > Google, which you apparently don't want to use, says (amongst others):       >       > "The %=C:% environment variable in Windows is a hidden, special       > system-wide variable that stores the current working directory for the       > C: drive.       >       > It is part of a legacy mechanism (dating back to MS-DOS) that allows       > the command processor (cmd.exe) to track separate current directories       > for every drive letter, rather than having one single global current       > directory for the whole system.       >       > Here are the key details about %=C:%:       >       > * Function: It keeps track of where you are in the C: drive if you are       > currently working on a different drive (e.g., if you are in D:\Data       > but type cd C:\Users, %=C:% will be updated to C:\Users).       >       > * Automatic Management: This variable is managed automatically by       > cmd.exe when you use the cd (chdir) command."       >       >> Remarks: Using the command-prompt it doesn't appear in the "set" list, and       >> it can be read, but not written.       >       > Google confirm that behaviour.       >       > It also gives a comparison with other variables. such ad %CD%       > %SystemDrive% and mentions the somwhat obvious:       >       > "If you change drives, other variables like %=D:%, %=E:%, etc., are       > created for those respective drives.".              Windows contains secrets normally kept hidden under the floorboards.              Following on what Frank said, it turns out Windows creates "drive-specific       current directory" environment variables which look funnily like this.        =C:        =D:        =Z:       Each one stores the current working directory (cwd) for that drive.              Try this:        C:\> cd \Windows        C:\Windows> D:        D:\> cd \Games        D:\Games> C:        C:\Windows>       Notice how switching back to C: returns you to C:\Windows automatically?       That's because Windows stored it in that =X: stuff.              They're maintained internally by the OS, not by the shell so you can't read       them (echo %=C:%) or see them with set or even write to them.              Try these proof-of-concept examples:        C:\> cd \Windows        C:\Windows> echo %=C:%        C:\Windows              Switch drives:        C:\Windows> D:        D:\> echo %=C:%        C:\Windows       It stays the same until you change directories on C:.              It's mysterious. Much like the %CD% vs. %__CD__% split        %__CD__% === an internal variable used by cmd.exe to track the raw current       directory path including UNC paths (\\server\share), extended path lengths       (\\?\C:\very\long\path), temp dirs, exact casing, setc. It's the true       working directory as the command interpreter sees it.              You might not notice the difference unless you're in a UNC or long path:        C:\> echo %__CD__%       Just like the =C: variables, it's protected.              Don't even get me started on the bizarre CONIN$/CONOUT$ handles!       --       Windows contains secrets normally kept hidden under the floorboards.              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca