Existe-t-il un équivalent de la commande Unix whereis dans Windows?
Pour que je puisse savoir où sont réellement les commandes que je peux exécuter.
La commande where fait ce que vous voulez et renvoie au moins au kit de ressources pour Windows 98; elle est incluse par défaut dans Server 2003, Vista et les versions plus récentes:
C:\>where csc
C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe
S'il est exécuté sans arguments (sous Vista), l'un de mes messages favoris est le suivant:
C:\>where
ERROR: The operation completed successfully.
Si vous exécutez PowerShell, veillez à inclure ".exe" pour le distinguer des alias ou des scripts "où" situés le long du chemin. ('Où' est un alias typique de Where-Object.ps1)
C:\> where.exe where.exe
C:\Windows\System32\where.exe
Veuillez utiliser where command:
> where app.exe
C'est le meilleur moyen d'atteindre votre objectif.
Vous pouvez également utiliser la commande PowerShell:
> $env:path.Split(';') | gci -Filter app.exe
et la version étendue ressemble à ceci:
> $env:path.Split(';') | select -Unique | ? {$_ -and (test-path $_)} | gci -Filter app.exe
hackerish qui.cmd:
@echo off
@set PATH=.;%PATH%
@rem
@rem about: something similar like the unix-alike-which, but with
@rem within pure cmd
@rem
if "%1" == "" (
@echo Usage:
@echo.
@echo which 'cmd'
@echo.
@echo.if 'cmd' is not found, ERRORLEVEL is set to 1
@echo.
) else (
( @for %%f in (%1 %1.exe %1.cmd %1.bat %1.pif) do if not "%%~$PATH:f" == "" ( @echo %%~$PATH:f ) else @set ERRORLEVEL=1)
)
Quelque part "là-bas", j'ai trouvé ce fichier de commandes whereis.bat
:
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i
Mise à jour: peut-être que je l'ai trouvé ici .
Il existe au moins un port Windows pour l'utilitaire which
.
function find ($string) {
Get-ChildItem -Path 'c:\' -Recurse -Filter $string;
}
function whereis ($string) {
$superpath = "$env:Path;C:\Program Files;C:\Program Files (x86)";
(echo $superpath).Split(';') | Get-ChildItem -Recurse -Filter $string;
}
Exemple:
PS> trouver Mozilla.admx
Directory: C:\Windows\PolicyDefinitions
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/27/2016 12:22 PM 37146 Mozilla.admx
PS> où est firefox.exe
Directory: C:\Program Files\Mozilla Firefox
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 9/21/2017 5:30 PM 477136 firefox.exe
Je cherchais ceci aujourd'hui et comme je suis sur XP sans le kit de ressources, je me suis tourné vers powershell avec la commande suivante:
dir -path c:\ -filter ffmpeg.* -r
Une approche différente (GUI), mais regardez Tout .