150

I am used to using

cd ~

to get right into my home directory. In Windows command prompt I have to do

cd Users\username

to get there. Is there a shortcut like the Linux one? It would be nice if I could get there by doing

cd username

Is something like this possible in Windows Vista?

5
  • 8
    In Unix, there's no need for the tilde. cd with no arguments will change to your home directory.
    – coneslayer
    Jul 28, 2010 at 12:08
  • there was a question like this here on su, can't find it.
    – akira
    Jul 28, 2010 at 12:59
  • 1
    @coneslayer i know but to move a file from one directory to another you use the tilde.
    – classer
    Aug 1, 2010 at 8:21
  • 3
    As simple as cd %userprofile% Jun 8, 2019 at 17:16
  • You can use Windows Power Shell (on Win XP and later) which allows you to use ~ for the home directory. See also ----> stackoverflow.com/questions/9228950/…
    – franz1
    Oct 4, 2019 at 9:53

13 Answers 13

24

You can always put a .bat file somewhere in your %PATH% which does the path changing for you.

2
219

Yes, you can use %HOMEPATH%, and %HOMEDRIVE%. These contain the full path of the user's home directory (without drive letter), and the drive letter, respectively.

There are quite a few other useful variables available, such as %OS% (Operating System), or %WINDIR% (Windows system directory). See Wikipedia: Environment Variables for a list.


Notes:

Actually, things are a bit complicated (as usual). There is also%USERPROFILE%, which does contain the drive letter, and is usually the same directory as %HOMEPATH% plus %HOMEDRIVE%.

The values of these variables, and which one is right for you, will depend on the Windows version and any changes by an administrator, as their values may be different (see e.g. the question Difference between profile and home path ).

10
  • 7
    This is the most correct answer, in my opinion, because it does not rely on hard-coded paths and any wacky filesystem links that may be between them.
    – Ed Orsi
    Mar 11, 2014 at 16:57
  • 4
    This is the correct answer. Jun 3, 2014 at 22:30
  • This saved my life! After looking at a lot of other answers from different questions. Again! This worked for me and should be the marked as the answer for this question.
    – Patricia
    Jan 25, 2016 at 6:43
  • @MissLucy: I'm happy it helped you. As to accepting an answer: That's up to the OP to decide. You could add a comment to the question to alert them.
    – sleske
    Jan 25, 2016 at 9:39
  • 1
    use %USERPROFILE% instead.
    – JJS
    Apr 8, 2016 at 19:43
25

Two other options both of which can be added to a script and auto-executed in a similar manner to BillP3rd's answer.

It's two more characters but...

SET ~=%HOMEPATH%    
CD %~%

or...

CD %~%\Desktop

Or...

doskey ~=cd %homepath%
~

Of course you can't use this ~ in paths but as a quick "jump to my home dir" typing ~ Enter is pretty quick.

2
  • 1
    Are you kidding me with the doskey thing??? I now have a single char shortcut to any folder I feel like cd into. This should be #1 answer.
    – Andrew
    May 16, 2019 at 12:42
  • 1
    Note that without %HOMEDRIVE% this doesn't work if your not on the same drive as where your %HOMEPATH% is located. it should always be %HOMEDRIVE%%HOMEPATH%.
    – NetMage
    Nov 12, 2021 at 0:39
14

sleske's answer is almost exactly right, but it doesn't always work.

If your home directory is on a network share setup as a mapped drive, run the following regardless of the drive of the current directory:

cd /D %HOMEDRIVE%%HOMEPATH%

The /D switch is necessary to allow cd to change drives.

3
  • 2
    doskey ~=cd /D %HOME% Usage: press ~ then enter at the command prompt and you're teleported to the C: drive in your home dir. Mar 21, 2023 at 9:45
  • 2
    For anyone else curious, Marcello's command uses doskey, a command builtin to Windows (and MS-DOS before it, all the way back to 1991 apparently), and creates a macro named ~ to run something like what I wrote in my answer. Mar 21, 2023 at 22:51
  • (Although I forgot to mention it, I don't claim any merit for that command: I (re)discovered it via other answers. I simply hadn't found that exact line mentioned elsewhere so I posted it as a bookmark for my future self :) ) Mar 23, 2023 at 8:46
12

I created a .cmd file in a directory in my PATH and named it cd~.cmd. Its contents are:

@cd %HOMEPATH%

I can type cd~ from anywhere to get to my home directory, though it's not the same as cd ~ (note the missing space), but is close enough for me.

2
  • 3
    Most clever answer. Combining yours with this answer by Kenny Evitt gives the best solution. Mar 4, 2016 at 15:09
  • Unfortunately none of these solutions will enable tab autocomplete to fill out a longer path. It chooses from the root directory `C:`, for me anyway.
    – RufusVS
    Aug 17, 2021 at 22:17
6

Is there a shortcut for C:\Users\<current user>\?

There is no direct shortcut.

There are a couple of different solutions (see below).

  1. Use an environment variable together with cd or cd /d

  2. Use subst or net use to creating a mapping to another drive letter.

  3. Install cygwin and use bash

  4. Use powershell - powershell supports ~

The last solution is probably the simplest if you are prepared to use powershell instead of cmd.


Solution 1: Use an environment variable together with cd or cd /d

If you want to change to this directory on a regular basis then run the following command:

setx DOCS %USERPROFILE%

This will permanently set the environment variable DOCS, but in order to use use it you need to first start a new cmd shell, then the variable is defined and ready to use:

F:\test>echo %DOCS%
C:\Users\DavidPostill\

To change directory from any location use the following command:

cd /d %DOCS%

If you are already on drive c: you can just use:

cd %DOCS%

Create a batch file (docs.cmd) and put it somewhere in your PATH.

docs.cmd:

@echo off
cd /d %DOCS%

You can then just type docs regardless of your current location and it will take you to C:\Users\<current user>


Solution 2: Use subst or net use to creating a mapping to another drive letter.

You can use subst:

subst x: %USERPROFILE%

And then

x:

Unfortunately drive mappings do not persist across reboots.

net use will persist across reboots, for example:

net use x: "\\computerName\c$\pathName" /persistent:yes

See the answers in How to make SUBST mapping persistent across reboots? for detailed instructions.


Solution 3: Install cygwin and use bash

You could consider installing cygwin:

Cygwin is:

  • a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.

Once you have installed cygwin you can run bash in a cygwin terminal and set the bash environment variable HOME as appropriate.

Alternatives to cygwin include msys (MingW):

MSYS is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present. It is intended to supplement MinGW and the deficiencies of the cmd shell.

And Git for Windows:

Git for Windows provides a BASH emulation used to run Git from the command line. *NIX users should feel right at home, as the BASH emulation behaves just like the "git" command in LINUX and UNIX environments.


Solution 4: Use powershell

As pointed out in a comment on another question by SBI powershell supports ~ and you can just type:

cd ~

Further Reading

  • An A-Z Index of the Windows CMD command line - An excellent reference for all things Windows cmd line related.
  • cd - Change Directory - Select a Folder (and drive)
  • setx - Set environment variables permanently, SETX can be used to set Environment Variables for the machine (HKLM) or currently logged on user (HKCU).
  • subst - Substitute a drive letter for a network or local path.
2
  • 1
    If on Powershell there are two additional ways: cd $HOME and cd $env:HOMEPATH May 31, 2018 at 21:04
  • @DavidPostill I may be misunderstanding the use of the word "shortcut", but if not, your answer that there is no shortcut to %UserProfile% is factually inaccurate: cd %UserProfile%.
    – JW0914
    Mar 18, 2020 at 11:59
3

Dunno if its a feature of our work login script or a windows default, but I can use cd %HOMEPATH% to achieve that, where HOMEPATH is an environment variable.

1
  • I see. It still takes a lot to write %HOMEPATH%. Also you can't auto-complete it. Is there a way I can make my username be equal to %HOMEPATH% by making a new command in cmd.exe?
    – classer
    Jul 28, 2010 at 12:03
2

I think everybody missed the main point: the purpose of cd ~ is to use the least number of keystrokes and not awkward percents, dollars, or tildes... and god forbid "cd %HOMEPATH%" or "cd %HOME%"

Since long time ago, I have with a c:\Tools\bats directory where I put my optimized minimum typing script named.... cdd.bat..

So, why cdd.bat ? Why not home.bat or h.bat ? Simple: with home or h, you would have a little extra right hand shift movement to hit 'h','o','m' and still have to move the left hand once to hit 'e' while right hand waits to hit enter and also important, that makes 5 keystrokes for home, and only two for 'h' BUT right hand needs to shift around a bit... which I will trade off. With 'h', there is a little shift move of the entire right forearm to hit 'h' then 'enter'... which I will also trade off

With 'cdd', though, both my hands already resting on the optimal keyboard place so there is no extra movement from either. Gets me 4 keystrokes while the first three are a quick succession.

You have to try and pay attention on a day to day bases to see the benefit.

1

I realize this is a long since done question, but just for the record. Install clink, this extends your command prompt in so many ways. Yes it it heavier then the above solutions but it makes the cmd window behave so much better.

2
  • clink == powerful Bash-style command line editing for cmd.exe
    – suspectus
    Feb 20, 2015 at 14:29
  • Right, and the whole point is that ~ resolves to the User\{user} directory.
    – THBBFT
    Feb 20, 2015 at 14:55
1

If you want all user's commmand prompts to start in their "home" directory, create the following registry key as an Expandable String Value (sans quotes, of course):

HKLM\Software\Microsoft\Command Processor\AutoRun : "cd /d %USERPROFILE%"

If you want only your command prompts to do it:

HKCU\Software\Microsoft\Command Processor\AutoRun : "cd /d %USERPROFILE%"

I make it a practice to keep a C:\Scripts folder in which I keep an autoexec.bat file which I invoke via this key.

1
  • Watch out, this will break bower and npm (and Visual Studio)...
    – Quandary
    Oct 10, 2017 at 9:50
0

I used a better terminal (cmder) for this purpose. It has built in aliases and its very easy to use. Just read the documentation about Aliases here.

0

Windows has really become "all about the GUI", so in your case, I'd just get the tools you want instead of trying to "bend" the system to your will. The MinGW tools are an excellent little collection of some of the most widely used GNU tools and I highly recommend it if you're a nix fan on Win.

0

I write a home.bat with content set home="ur/home/path"&c:&cd %home% and save it to any folder declare in environment variables if not in Cdrive edit content home.bat. So that u can use home as command in anywhere by cmd. Also edit variable home to quick-set home-path in current session ,quite convenient.

1
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Jul 15, 2022 at 10:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .