Unter Linux haben wir den Befehl "which", um den Pfad einer ausführbaren Datei herauszufinden.
Was ist das Windows-Äquivalent? Gibt es dafür einen PowerShell-Befehl?
Unter Linux haben wir den Befehl "which", um den Pfad einer ausführbaren Datei herauszufinden.
Was ist das Windows-Äquivalent? Gibt es dafür einen PowerShell-Befehl?
Antworten:
Einige Windows-Versionen (ich denke Windows 2003 und höher) haben den Befehl where:
c:\>where ping
C:\Windows\System32\PING.EXE
where
Arbeit für mich in Windows 7
where /r c:\ fileName
Durch das Hinzufügen von / rc: \ konnte ich eine rekursive Suche ausführen, die im Stammverzeichnis des Laufwerks C unter Windows 7 Professional beginnt. Offenbar befindet
where.exe ping
weil where
standardmäßig Cmdlet, Where-Object
die völlig andere Geschichte ist
where.exe
explizit, anstatt where
für mich in PowerShell zu arbeiten
Ja, Get-Command
findet alle Befehle einschließlich ausführbarer Dateien:
PS\> Get-Command ipconfig
Wenn Sie die Befehle auf nur ausführbare Dateien beschränken möchten:
PS\> Get-Command -CommandType Application
Findet alle Exes auf deinem Weg. Es gibt einen Alias für die interaktive Verwendung:
PS\> gcm net* -CommandType Application
Um den Pfad einer ausführbaren Datei abzurufen, können Sie die Path
Eigenschaft des zurückgegebenen Objekts verwenden. Zum Beispiel:
PS\> (Get-Command notepad.exe).Path
Weitere Informationen erhalten Sie, wenn Sie ausführen man Get-Command -full
.
Wenn Sie es kurz machen möchten, erstellen Sie eine one line which.cmd-Datei mit dem Inhalt
echo %~$PATH:1
Dadurch wird der erste Parameter (% 1) durchsucht, der dem Skript zugeführt wird, und der vollständige Pfad der gefundenen Datei wird angezeigt. Ein guter Ort, um dieses Skript in Windows 10 einzufügen, ist% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd
Und du bekommst deinen welchen Befehl im Pfad.
c:\>which cmd.exe
c:\>echo C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe
where.exe
where
In PowerShell funktioniert dies ausdrücklich nicht :
PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
where ping
habe nichts mit PowerShell zu tun.
where.exe
.