Kiedy uruchamiam aplikację z linii cmd, jak mogę znaleźć ścieżkę exe?


7

Kiedy uruchamiam aplikację z wiersza polecenia systemu DOS w systemie Windows, dane polecenie często nie znajduje się w bieżącym katalogu, ale można je znaleźć za pomocą zmiennej środowiskowej PATH. Jaki jest najszybszy sposób znalezienia ścieżki rzeczywistego uruchamianego pliku EXE?


1
„ścieżka” daje listę, którą możesz sprawdzić ręcznie. Chociaż nie umyślnie uderzaj; przed powrotem lub być może będziesz musiał poświęcić 10 minut na odbudowanie ścieżki, tak jak właśnie zrobiłem> _ <
Phoshi

Odpowiedzi:


7

W systemie Vista możesz wpisać nazwę pliku wykonywalnego w polu wyszukiwania w menu Start, gdy jest on wyświetlany w wynikach, kliknij r-r i wybierz z menu opcję „Otwórz lokalizację pliku”.

Jeśli program nadal działa i korzystasz z Eksploratora procesów z Sysinternals, możesz kliknąć plik wykonywalny na liście procesów i wybrać właściwości. Na karcie Obraz masz ścieżkę do pliku wykonywalnego.

Innym sposobem jest użycie Windows Powershell , użycie polecenia „get-command executable” bez cudzysłowów, a otrzymasz ścieżkę do pliku wykonywalnego, którego szukasz. Skrótem do polecenia jest gcm, więc użyj takiego „gcm calc”


1
Zaakceptowanie tej odpowiedzi, ponieważ bezpośrednio odnosi się do mojego pytania. Podejście Powershell wydaje się również najszybszym sposobem. :) Niestety ... Chcę znaleźć ścieżkę do pliku EXE po uruchomieniu osobnego pliku wsadowego DOS, który modyfikuje zmienną środowiskową PATH. W programie Powershell uruchomienie pliku wsadowego wymaga uruchomienia osobnego programu cmd.exe, co oznacza, że ścieżka PATH w programie Powershell pozostaje nienaruszona, a więc nie można zlokalizować mojego docelowego pliku exe (tf.exe). Mimo to powinienem był to powiedzieć w swoim pytaniu. Po prostu nie sądziłem, że to było ważne w tym czasie. : - /
Mal Ross

1
Korzystając z menedżera zadań w Windows 7 (być może także w Vista), możesz również kliknąć proces prawym przyciskiem myszy i wybrać „Otwórz lokalizację pliku”. W tym celu nie trzeba instalować oprogramowania innych firm, takiego jak eksplorator procesów. Jeśli znasz nazwę procesu, możesz także wpisać, get-process processname | % { $_.path }aby znaleźć ścieżkę do pliku wykonywalnego. Nie działa to jednak w przypadku każdego procesu. Nie znalazłem jeszcze takiej reguły ...
wullxz

5

Jeśli masz zainstalowany program cygwin , zawsze możesz użyć polecenia „który”

C:> which notepad
/c/WINDOWS/system32/notepad

miły. ale spróbuj " which dir" ...
nik

+1, podoba mi się ten pomysł - wystarczy, że potrzebuje środowiska uniksowego. Możesz także użyć pliku binarnego UnixUtil. unxutils.sourceforge.net
nik

Istnieje kilka implementacji, które krążą wokół, które działają bez podsystemu Unix
Xetius

3

Spróbuj wykonać następujące czynności:

@rem file which.bat (must be placed somewhere in %PATH%)
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i

Po wpisaniu which notepadw wierszu polecenia ( cmd.exe):

C:\>which notepad
C:\Windows\System32\notepad.exe

nie działa ...
Chazt3n

@ Chazt3n W tej chwili brzmi to bezpodstawnie. Proszę wyjaśnić, jak korzystasz?
Orient

2

Jeśli pytasz o program, który jest obecnie uruchomiony, system Windows nie oferuje niczego, co jest gotowe z linii poleceń, o ile mi wiadomo, co daje pełną ścieżkę do pliku wykonywalnego.

Jeśli pytasz o program, który możesz wywołać w wierszu poleceń, możesz użyć wherepolecenia:

C:\> where fsutil
C:\Windows\System32\fsutil.exe

C:\>

Działa to dla wszystkich programów, które można wywołać w bieżącej zmiennej PATH lub bieżącym katalogu roboczym. Nie wykryje wbudowanych poleceń, takich jak DIR, ale należy się tego spodziewać.


Na marginesie, narzędzie gdzie nie jest domyślnie dołączone do systemu Windows XP lub wcześniejszego. Wydaje mi się, że Microsoft zaczął dołączać go do systemu Vista lub 7, ale nie mam żadnego dostępnego do potwierdzenia.
Jesse

0

Możesz spróbować

CD \
dir /s command.*

lub z Eksploratora, po prostu wyszukaj nazwę polecenia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.