where to windowsowy odpowiednik uniksowego which — mówi Ci, gdzie w systemie leży plik pasujący do wzorca. Domyślnie przeszukuje bieżący katalog oraz wszystkie foldery wypisane w zmiennej PATH i wypisuje pełne ścieżki znalezionych plików. Używasz go, gdy chcesz sprawdzić, który dokładnie python.exe czy node.exe odpali się po wpisaniu nazwy w konsoli — bo gdy masz kilka wersji w różnych folderach, decyduje kolejność w PATH, a to bywa źródłem zagadkowych błędów.
Składnia i najważniejsze opcje
Podstawowa forma: where [/r katalog] [/q] [/f] [/t] wzorzec
/r katalog— rekurencyjne przeszukiwanie wskazanego katalogu i wszystkich jego podkatalogów (nie tylkoPATH)./q— tryb cichy: nic nie wypisuje, tylko ustawiaerrorlevel(0 = znaleziono, 1 = nie znaleziono). Idealne do skryptów batch./f— obejmuje każdą zwróconą ścieżkę cudzysłowami, co ratuje życie przy ścieżkach ze spacjami./t— dokłada rozmiar pliku oraz datę i godzinę ostatniej modyfikacji, w stylu wynikudir.$ENV:wzorzec— szuka w katalogach wypisanych w zmiennej środowiskowejENVzamiast wPATH.ścieżka:wzorzec— przeszukuje wskazaną ścieżkę zamiastPATH.
Jeśli nie podasz rozszerzenia, where dokleja te ze zmiennej PATHEXT (m.in. .exe, .bat, .cmd). Wzorzec przyjmuje symbole wieloznaczne * i ?.
Przykłady użycia
where python— pokazuje wszystkiepython.exewidoczne wPATH; pierwszy z listy to ten, który faktycznie się uruchomi.where /r C:\Users\Ty\Projekty *.log— znajduje rekurencyjnie każdy plik.logw drzewie projektów.where /t /f node.exe— wypisuje ścieżkę do Node.js w cudzysłowach wraz z rozmiarem i datą modyfikacji.where $PATH:cmd.exe— jawnie przeszukuje katalogi ze zmiennejPATHpod kątemcmd.exe.where /q git && echo Git jest zainstalowany— cichy test w skrypcie: komunikat pojawi się tylko, gdygitistnieje wPATH.
Częste błędy i pułapki
Największa pułapka to mylenie where (CMD) z where.exe w PowerShellu. W PowerShellu where jest aliasem na Where-Object (filtrowanie obiektów w potoku), więc żeby wywołać właściwy program, musisz napisać pełne where.exe python. Inaczej PowerShell zamiast szukać pliku spróbuje przefiltrować pusty potok i wyjdzie z tego niezła konsternacja.
Druga sprawa: where szuka tylko w PATH i bieżącym katalogu, a nie w całym dysku. Jeśli plik jest gdzie indziej, dostaniesz INFO: Could not find files — dorzuć /r z konkretnym katalogiem. Pamiętaj też, że opcja /r musi stać przed wzorcem, a katalog podajesz zaraz po niej.
Do skryptów wybieraj /q zamiast parsowania tekstu — sprawdzanie errorlevel jest odporne na zmiany formatu wyjścia.
Powiązane komendy: w PowerShellu Get-Command i Where-Object, w systemach uniksowych which, whereis i find, a do listowania samych plików dir.