আমি কীভাবে উইন্ডোজটিতে এক্সিকিউটেবলের অবস্থান খুঁজে পেতে পারি?


154

আমার মনে আছে যে আমি whereকনসোলে কোনও এক্সিকিউটেবল প্রোগ্রামের জন্য অবস্থানগুলি সন্ধান করতে ডাকা একটি সরঞ্জাম ব্যবহার করেছি :

 C:\Tmp\Where myTool.exe
 C:\Program Files\MyApp\myTools.exe
 ....

এখন আমি এই সরঞ্জামটি খুঁজে পাচ্ছি না। নিশ্চিত নয় যে উইন্ডোজটির সেই অনুসন্ধানটি করার জন্য কোনও বিল্ট-ইন সরঞ্জাম আছে?



যদি অ্যাপ্লিকেশনটি চলমান থাকে এবং আপনার অবস্থানটি জানতে হবে, প্রক্রিয়া এক্সপ্লোরার (সিস ইন্টার্নাল থেকে) ব্যবহার করুন।
গণেশ আর।

6
whereউইন্ডোজ 7 এন্টারপ্রাইজ
বোহেমিয়ান

4
পেজিং ওপ: দয়া করে গৃহীত উত্তরটি আপডেট করুন :)
জ্যাক

1
@ ডেভিড.চু.সি.এ অনুগ্রহ করে গৃহীত উত্তর আপডেট করুন
ম্যাট ফ্রেয়ার

উত্তর:


351

স্ট্যাকওভারফ্লো উত্তর অনুসারে উইন্ডোজগুলিতে 'কোন' এর সমতুল্য? , where.exeউইন্ডোজ 7 এবং উইন্ডোজ সার্ভার 2003 এবং পরে এটি করে:

উদাহরণ

C:\> where ping

আউটপুট:

C:\Windows\System32\PING.EXE

19
অতিরিক্ত সফ্টওয়্যার ইনস্টল না করে এটি কাজ করে এটিকে সঠিক উত্তর হিসাবে চিহ্নিত করা উচিত
কুকি

25
এই উত্তরের একটি গুরুত্বপূর্ণ অংশটি হ'ল পাওয়ারশেল-এ, এটির whereজন্য একটি ডিফল্ট উপন্যাস Where-Object, সুতরাং আপনার পরিবর্তে ব্যবহার করতে হবে where.exe, বা gcm/Get-Command
ডেভ অ্যান্ডারসেন

2
পাওয়ারশেল সম্পর্কে কি। আমি কীভাবে পাওয়ারশেলে একই অর্জন করতে পারি?
কেআরভি

1
@ কেআরভি @ ডেভ অ্যান্ডারসন যেমন উল্লেখ করেছেন, পাওয়ারশেলে আপনি টাইপ করতে পারেন Get-Command ping(বা ন্যায়সঙ্গত gcm ping), যা আপনাকে অন্য কিছু তথ্যের পাশাপাশি পুরো পথ দেবে।
স্যাম

22

সম্পাদনা: আমার যুক্ত করা উচিত ছিল, আপনি যদি কমান্ড প্রম্পট থেকে WHERE কমান্ডটি ব্যবহার করতে না পারেন তবে আপনার PATH ভেরিয়েবলটি পরীক্ষা করুন। (কেবলমাত্র "পথ" কমান্ডটি ব্যবহার করুন)) সি: \ উইন্ডোজ \ সিস্টেম 32 আপনার পথে রয়েছে তা নিশ্চিত করুন। সেখানেই "where.exe" অবস্থিত।

আপনি যে আদেশটি সন্ধান করছেন তা কোথায়! যেখানে UNIX শেল বিল্ট-ইন "যা" এবং "সনাক্ত করুন" কমান্ডের মধ্যে ক্রসের মতো, এটি কমান্ড এক্সিকিউটেবল এবং নিয়মিত ফাইল উভয়ের জন্য কাজ করে।

এটি দু'জনের মধ্যে যে কোনওটির চেয়ে কিছুটা জটিল, যদিও সাধারণভাবে এটি সাধারণ

WHERE <file>

কাজ করবে.

এটি "ফাইন্ড" কমান্ডের থেকে পৃথক যে এটি সম্পূর্ণ ফাইল সিস্টেমের মধ্যে অনুসন্ধান করছে না। পরিবর্তে, ডিফল্ট আচরণটি দুটি স্থানে ফাইলগুলি সন্ধান করা:

  • বর্তমান ডিরেক্টরি।
  • PATH ভেরিয়েবলের সমস্ত ডিরেক্টরি।

সুতরাং, ডিরেক্টরি উল্লেখ না করে আপনি যে কোনও কমান্ড সরাসরি কমান্ড প্রম্পট থেকে চালাতে পারেন, সেগুলি WHERE আদেশ দ্বারা পাওয়া যাবে। (কারণ এর মতো কোনও কমান্ড ইতিমধ্যে PATH পরিবর্তনশীল তালিকায় রয়েছে))

আপনি যদি কেবল কমান্ড পাথ চলকটিতে অনুসন্ধান করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

WHERE "$path:<search text>"

অন্যদিকে, আপনি যদি ডিরেক্টরি ডিরেক্টরিতে কোনও ফাইলের সমস্ত অনুলিপি খুঁজে পেতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

WHERE /R <Top Level Directory> <search text>

অবশেষে, যেখানে এক্সটেনশনটি অন্তর্ভুক্ত না করে PATHEXT ভেরিয়েবল থেকে এক্সটেনশন সহ কমান্ড এবং যে কোনও ফাইল সন্ধান করবে। অন্য সমস্ত ফাইল হুবহু বা ওয়াইল্ডকার্ডের সাথে নির্দিষ্ট করতে হবে।

উদাহরণস্বরূপ "dxdiag.exe" এবং "dxdiagn.dll" ফাইলগুলি ধরুন। নিম্নলিখিত কমান্ড এবং তার আউটপুট নোট করুন:

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" এর সমস্ত সংস্করণ ফিরিয়ে দিতে সফল হয়েছে কারণ ".exe" পাঠ্য ভেরিয়েবলের অন্যতম এক্সটেনশন। (দ্রষ্টব্য: "WHERE dxdiag" পাশাপাশি কাজ করবে, কারণ সি: \ উইন্ডোজ \ সিস্টেম 32 PATH ভেরিয়েবলে রয়েছে))

WHERE /R C:\Windows dxdiagn

অন্য দিকে, কোনো ফলাফল ফিরে যাওয়ার, কারণ ".dll" হয় ব্যর্থ না PATHEXT হবে।

এই ক্ষেত্রে, ফলাফলটি দেখুন যা একটি ওয়াইল্ডকার্ড যুক্ত করে যা আমাদের দেয়:

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

এটি সফলভাবে dxdiagn.dll এর সমস্ত সংস্করণ প্রদান করে।

আরও তথ্যের জন্য, "কোথায় /?" ব্যবহার করুন। আশাকরি এটা সাহায্য করবে!


2
where where C:\Windows\System32\where.exe:)
vp_arth

1
@vp_arth ঠিক ঠিক একই জিনিসটি ভাবছিলেন :)
বিপরীত প্রকৌশলী

10

ব্যবহার dir:

cd \
dir /s /b mytool.exe

cd \অংশ ড্রাইভ রুট করার জন্য আপনাকে পরিবর্তন, অনুক্রমের উপরের অনুসন্ধানের শুরু নিশ্চিত করতে হবে।


এটি একটি কমান্ড লাইন উইন্ডোজ অনুসন্ধানের মতো বলে মনে হচ্ছে।
গণেশ আর।

5
এটি ড্রাইভটির পুনরাবৃত্তি অনুসন্ধান করে এবং চিরকালের জন্য গ্রহণ করে।
djhowell

6
এক্সেকিউটেবল যে এটি একমাত্র উপায় নন পাথ এনভায়রনমেন্ট ভেরিয়েবল এই করতে হয়। তিনি কখনও তাঁর পথ নির্দিষ্ট করেননি, তিনি কোনও নির্বাহী বলেছিলেন ।
জন টি

এটি কার্যকর হতে পারে তবে কিছুক্ষণ সময় নেয়।
মাইকেল জেড

অবশ্যই এটি কেবল তখনই কার্যকর হয় যদি আপনি এক্সিকিউটেবলের নাম বা কমপক্ষে নামের কোনও অংশের নাম জানেন
অলিভার উইলিয়ামস

8

নোট করুন যে পাওয়ারশেলের জন্য কিছু জিনিস কিছুটা আলাদা হতে পারে:

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

ধন্যবাদ, এটি সিএমডি এবং পাওয়ারশেল উভয়ের জন্যই কাজ করে
ডিং-ইয়ি চেন

3

হতাশাজনক যে এটি সাধারণ কমান্ড হিসাবে অন্তর্নির্মিত নয়।

তবে, বেশ কয়েকটি সমাধান রয়েছে যার মধ্যে একটি ব্যাচ ফাইল

নীচে একটি ব্যাচ ফাইল (যা.বাট) তৈরি করুন:

@setlocal
@set P2=.;%PATH%
@for %%e in (%PATHEXT%) do @for %%i in (%~n1%%e) do @if NOT "%%~$P2:i"=="" echo %%~$P2:i 

এটি স্থানীয় ডিরেক্টরিতে দেখায়, কোনও এক্সটেনশন সহ বা ছাড়াই কোনও ফাইলের পরামিতি গ্রহণ করবে এবং বর্তমান ডিরেক্টরি থেকে বা PATH তে প্রথম ম্যাচটি ফিরিয়ে দেবে।

তারপরে which cmd.exeএটি cmd.exe সন্ধান করার মতো চালান যা আপনি টাইপ করলে এটি কার্যকর হবে cmd


3

উইন্ডোতে আপনি নিখরচায় ইউটিলিটি সমস্ত কিছু অনুসন্ধান ইঞ্জিনটি পূর্ণ বা আংশিক নামের মাধ্যমে কোনও ফাইলের জন্য তাত্ক্ষণিকভাবে অনুসন্ধান করতে (যদি আপনার হার্ড ডিস্কটি এনটিএফএসে ফর্ম্যাট করা থাকে) ব্যবহার করতে পারেন।


1
এই এবং উইন্ডোজ অনুসন্ধানের মধ্যে রাত এবং দিনের পার্থক্য।
অ্যান্টনিভিও


1

পাওয়ারশেলে

(@($env:path.split(";")) + (pwd).Path)  | where { dir $_ -ErrorAction SilentlyContinue |? Name -eq foo.exe }

আপনি এটিকে সহজেই একটি সিএমডলেটে রূপান্তর করতে পারেন।

এটি সম্পাদন করার অন্য একটি উপায়, যেমন একটি সম্পাদনায় প্রস্তাবিত:

get-command notepad.exe | select Source

0

এটি চালু করার জন্য যদি আপনার কেবল পথের প্রয়োজন হয় তবে স্টার্ট কমান্ডটি ব্যবহার করা ভাল। উদাহরণস্বরূপ, আপনি যেখানে ক্রোম of ই | আইম} শুরু করতে "ক্রোম.এক্সে" শুরু করতে পারেন তা নির্ধারণ করা হয়েছে, এটি যেখানেই ইনস্টল করা আছে।


0

হেই, আমাকে এই উইন্ডোজটির একটি ওয়ান লাইনার ব্যাচ ফাইলটি পোস্ট করতে হবে:

C:>type wh.cmd
@for %%f in (%*) do for %%e in (%PATHEXT% .dll .lnk) do for %%b in (%%f%%e) do for %%d in (%PATH%) do if exist %%d\%%b echo %%d\%%b

একটি পরীক্ষা:

C:>wh ssh
C:\cygwin64\bin\ssh.EXE
C:\Windows\System32\OpenSSH\\ssh.EXE

আপনি যদি কোডটি মুড়ে ফেলে থাকেন setlocal enableextensionsএবং endlocalকোনও ডিফল্টরূপে এক্সটেনশানগুলি সক্ষম করে না এমন ব্যবহারকারীদের জন্য প্রয়োজন হয় তবে এটি এক-লাইনার নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.