In Linux, we have the "which" command to find out the path of an executable.
What is its Windows equivalent? Is there any PowerShell command for doing that?
- 21,717
-
See also http://stackoverflow.com/questions/304319/is-there-an-equivalent-of-which-on-the-windows-command-line – ysap May 08 '15 at 10:17
-
Is there an equivalent of 'which' on the Windows command line? – phuclv May 04 '16 at 04:21
6 Answers
Newer versions of Windows (I think Windows 2003 and up) have the where command:
C:\>where ping
C:\Windows\System32\PING.EXE
And for PowerShell, explicitly add the .exe suffix:
PS C:\>where.exe ping
C:\Windows\System32\PING.EXE
- 1,589
-
6
-
10
-
where /r c:\ fileNameadding the /r c:\ allowed me to perform a recursive search starting at the root of the C drive using Windows 7 Professional it seems to not be in https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Step_by_Step_Guide/ap-doslinux.html – CrandellWS Sep 25 '15 at 09:09 -
12in Powershell you should say
where.exe pingbecausewhereis by default aliased toWhere-Objectcmdlet which is completely different story – maoizm May 27 '18 at 11:18 -
2
-
-
NGL, I like this name better than
which. PS: This worked for me in Windows 10 cmd.exe. I typedwhere.exe wsl– Daniel Kaplan Jan 25 '24 at 06:17 -
That is not the equivalent of which command. that is the equivalent of whereis command in linux. so it wont tell you which command is the executable. it just shows you all matching executables of that name in the path. – Peter Moore Mar 11 '24 at 15:48
Yes, Get-Command will find all commands including executables:
PS\> Get-Command ipconfig
If you want to limit the commands to just executables:
PS\> Get-Command -CommandType Application
Will find all exes in your path. There is an alias for interactive use:
PS\> gcm net* -CommandType Application
To get the path of an executable, you can use the Path property of the returned object. For example:
PS\> (Get-Command notepad.exe).Path
For more info, run man Get-Command -full.
where.exe explicitly rather than where works for me in PowerShell:
PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
- 427
-
-
In PowerShell? I'm on Windows 10 Pro 1903, and
where pinggives me nothing in PowerShell. – drkvogel Sep 26 '19 at 15:53 -
Cmd
where
C:\Users\X>where ping
C:\Windows\System32\PING.EXE
C:\Users\X>
Powershell
Get-Command
PS C:\Users\X> Get-Command ping
CommandType Name Version Source
----------- ---- ------- ------
Application PING.EXE 10.0.1776… C:\WINDOWS\system32\PING.EXE
PS C:\Users\X>
- 141
If you want to make it short, create a one line which.cmd file with the content
echo %~$PATH:1
This will search the first parameter (%1) fed to the script and display the full path of found file. Good place to put this script in windows 10 is %LOCALAPPDATA%\Microsoft\WindowsApps\which.cmd
And you get your which command in path.
c:\>which cmd.exe
c:\>echo C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe
- 31
In addition to user10404, the help command will work on aliases, so you can use the same command name (gcm) for help and interactive use:
help gcm -Parameter *
# or
man gcm -Par *
- 745