How do I open an Explorer window in a given directory from cmd.exe?

I see how to launch many other programs from a batch file, but I can't find a command like open on Mac OS X. Does such a tool exist on Windows? Powershell, or a Windows API call from an executable would also work.

Or, put another way, how can I invoke Windows default "Open" handler for a file from a batch file or powershell script?


Solution 1:

In Windows you can open Explorer with the following command:

C:\Users\Leniel>start %windir%\explorer.exe

If you want it to open a specific folder, do this for example:

C:\Users\Leniel>start %windir%\explorer.exe "C:\Users\Leniel\Desktop"

Solution 2:

The direct equivalent of OS X's open is start in cmd.

start foo.txt

would launch Notepad (or whatever text editor you're using),

start http://example.com

would launch your browser,

start \someDirectory

will launch Explorer, etc.

Care has to be taken with arguments in quotes, as start will interpret the first quoted argument as the window title to use, so something like

start "C:\Users\Me\Folder with spaces\somedocument.docx"

will not work as intended. Instead prepend an empty quoted argument in that case:

start "" "C:\Users\Me\Folder with spaces\somedocument.docx"

Note that start isn't a separate program but a shell-builtin. So to invoke this from an external program you have to use something like

cmd /c start ...

The equivalent in PowerShell is either Start-Process or Invoke-Item. The latter is probably better suited for this task.

Invoke-Item foo.txt  # launches your text editor with foo.txt
Invoke-Item .        # starts Explorer in the current directory

As for the Windows API, you're looking for ShellExecute with the open verb.

Solution 3:

You can just try

start .

This will open file explorer directly with the current directory path.

Solution 4:

"explorer.exe ." worked for me.

explorer.exe .

IMO - As we need to open "Windows Explorer" from cmd prompt, "explorer.exe ." is easy to remember.