Bir konsolda bunun gibi çalıştırılabilir programların konumlarını bulmak için where
adı verilen bir araç kullandığımı hatırladım:
C:\Tmp\Where myTool.exe
C:\Program Files\MyApp\myTools.exe
....
Şimdi bu aracı bulamıyorum. Windows'un bu aramayı yapmak için yerleşik bir aracı olup olmadığından emin değil misiniz?
Linux'ta hangi komutunu düşünüyor olabilirsiniz.
$ which bash
/bin/bash
Windows'ta eşdeğer bir aracın farkında değilim.
EDIT: Sadece bu işlevi sizin için sağlayacak olan Unix Utils for Windows adlı bir paket olduğunu hatırladım.
StackOverflow cevabına göre - 'pencerelerinde' hangisinin eşdeğeri var mı? , where.exe
bunu Windows 7 ve Windows Server 2003 ve sonraki sürümlerinde yapar:
C:\> where ping
C:\Windows\System32\PING.EXE
EDIT: Eklemeliydim, Prompt komutundan WHERE komutunu kullanamıyorsanız PATH değişkeninizi kontrol edin. (Sadece "path" komutunu kullanın.) C:\Windows\System32 yolunda olduğundan emin olun. Burası "where.exe" nin bulunduğu yer.
NEREDE, aradığınız komut! NEREDE, UNIX Shell yerleşik "hangi" ve "locate" komutu arasındaki bir geçiş gibidir, çünkü hem komut çalıştırılabilir dosyalar hem de normal dosyalar için çalışır.
Aynı zamanda, her ikisinden de biraz daha karmaşık olsa da, genel olarak basit.
WHERE <file>
çalışacak.
Tüm dosya sistemine bakmadığı için "locate" komutundan farklıdır. Bunun yerine, varsayılan davranış iki konumda dosya aramaktır:
Bu nedenle, dizini belirtmeden doğrudan bir Komut İsteminden çalıştırabileceğiniz herhangi bir komut, NEREDE komutu tarafından bulunur. (Çünkü bunun gibi herhangi bir komut PATH değişkeni listesinde zaten var.)
Komut yolu değişkeninde only öğesini aramak istiyorsanız, şunları kullanabilirsiniz:
WHERE "$path:<search text>"
Öte yandan, bir dosyanın tüm kopyalarını bir dizin ağacında bulmak istiyorsanız, şunları kullanabilirsiniz:
WHERE /R <Top Level Directory> <search text>
Son olarak, WHERE, uzantı dahil etmeden PATHEXT değişkeninden bir uzantıya sahip komutları ve dosyaları bulur. Diğer tüm dosyalar tam olarak veya joker karakterlerle belirtilmelidir.
Örneğin "dxdiag.exe" ve "dxdiagn.dll" dosyalarını alın. Aşağıdaki komutu ve çıktısını not alın:
WHERE /R C:\Windows dxdiag
C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\AMD64_Microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_Microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe
"Dxdiag.exe" nin tüm sürümlerini döndürmekte başarılı olur çünkü ".exe" PATHEXT değişkenindeki uzantılardan biridir. (Not: "WHERE dxdiag" de işe yarayabilirdi, çünkü C:\Windows\System32 PATH değişkeninde.)
WHERE /R C:\Windows dxdiagn
Öte yandan, ".dll" PATHEXT içinde değil olduğundan hiçbir sonuç döndüremez.
Bu durumda, bir joker karakter eklemenin bize sağladığı sonuçlara bakın:
WHERE /R C:\Windows dxdiagn*
C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\AMD64_Microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\AMD64_Microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_Microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_Microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll
Başarıyla döndürür hepsi dxdiagn.dll sürümleri.
Daha fazla bilgi için "NEREDE /?" Kullanın. Bu yardımcı olur umarım!
dir
kullanın:
cd \
dir /s /b mytool.exe
cd \
bölümü, aramanın hiyerarşinin tepesinde başlamasını sağlamak için sizi sürücünün köküne değiştirir.
PowerShell için bazı şeylerin biraz farklı olabileceğini unutmayın:
PS C:\Users\Rob.wb-devel> where ping
PS C:\Users\Rob.wb-devel> where git
PS C:\Users\Rob.wb-devel> whereis.bat git
C:\Program Files (x86)\Git\cmd\git.exe
PS C:\Users\Rob.wb-devel> where.exe git
C:\Program Files (x86)\Git\cmd\git.exe
Bu basit bir komut olarak yerleşik olmadığını sinir bozucu.
Ancak, bunlardan biri toplu iş dosyası olan birkaç çözüm vardır.
Aşağıdaki gibi bir toplu iş dosyası (hangi.bat) oluşturun:
@setlocal
@set P2=.;%PATH%
@for %%e in (%PATHEXT%) do @for %%i in (%~n1%%e) do @if NOT "%%~$P2:i"=="" echo %%~$P2:i
Bu, yerel dizine bakar, bir uzantı olan veya olmayan bir dosya adı parametresi alır ve ilk eşleşmeyi geçerli dizinden veya PATH içinde döndürür.
Sonrawhich cmd.exe
gibi çalıştırın, cmd
yazdığınızda çalıştırılacak cmd.exe dosyasını bulun.
Pencerelerde, ücretsiz yardımcı programını kullanabilirsiniz Her şeyi arama motoru aramak için anında herhangi bir dosyayı tam veya kısmi bir ada göre (eğer sabit diskiniz ntfs biçiminde ise).
PowerShell'de
(@($env:path.split(";")) + (pwd).Path) | where { dir $_ -ErrorAction SilentlyContinue |? Name -eq foo.exe }
Bunu kolayca bir Cmdlet'e dönüştürebilirsiniz.
Bir düzenlemede önerildiği gibi, bunu başarmanın başka bir yolu:
get-command notepad.exe | select Source
Başlatmak için yalnızca yola ihtiyacınız varsa, start komutunu kullanmak genellikle daha iyidir. Örneğin, nerede yüklü olursa olsun Chrom {e | ium} uygulamasını başlatmak için "start chrome.exe" kullanabilirsiniz.