विंडोज़ कमांड लाइन पर कमांड का पूरा पथ ढूँढना

Batch

परिचय: विंडोज़ पर छिपे हुए कमांड पथ को उजागर करना

विंडोज़ कमांड लाइन पर स्क्रिप्ट और कमांड के साथ काम करने वाले डेवलपर्स के लिए पथ टकराव एक लगातार मुद्दा हो सकता है। जब आपकी एक स्क्रिप्ट पथ में स्थान के कारण किसी अन्य प्रोग्राम द्वारा ढक दी जाती है, तो किसी दिए गए कमांड के पूर्ण पथ की पहचान करना महत्वपूर्ण हो जाता है। यह परिदृश्य अक्सर उपयोगकर्ताओं को UNIX 'कौन सा' कमांड के समकक्ष की तलाश में ले जाता है, जो कमांड के सटीक पथ का पता लगाना आसान बनाता है।

UNIX सिस्टम पर, 'कौन सा' कमांड का उपयोग किसी निर्दिष्ट कमांड का पूरा पथ प्रदर्शित करने के लिए किया जाता है, जो ऐसी छाया समस्याओं को हल करने में सहायता करता है। हालाँकि, विंडोज़ उपयोगकर्ताओं को आश्चर्य हो सकता है कि क्या उनके प्लेटफ़ॉर्म पर समान उपयोगिता उपलब्ध है। निम्नलिखित चर्चा में, हम समान कार्यक्षमता प्राप्त करने और पथ-संबंधित मुद्दों को प्रभावी ढंग से प्रबंधित करने में आपकी सहायता के लिए विंडोज़ पर उपलब्ध विकल्पों का पता लगाएंगे।

आज्ञा विवरण
setlocal एक बैच फ़ाइल में पर्यावरण चर का स्थानीयकरण शुरू करता है, यह सुनिश्चित करते हुए कि परिवर्तन वैश्विक वातावरण को प्रभावित नहीं करते हैं।
for %%i in ("%command%") do आइटमों के निर्दिष्ट सेट के माध्यम से पुनरावृत्ति करता है, जिससे प्रत्येक आइटम पर संचालन करने की अनुमति मिलती है।
if exist "%%j\%%~i.exe" जाँचता है कि दिए गए पथ पर कोई विशिष्ट फ़ाइल मौजूद है या नहीं।
param PowerShell स्क्रिप्ट को दिए गए पैरामीटर को परिभाषित और पुनर्प्राप्त करता है।
Join-Path PowerShell में विभाजक वर्णों को उचित रूप से संभालते हुए, दो या दो से अधिक स्ट्रिंग्स को एक पथ में संयोजित करता है।
Test-Path PowerShell में निर्दिष्ट पथ या फ़ाइल के अस्तित्व को सत्यापित करता है।
os.pathsep ऑपरेटिंग सिस्टम द्वारा उपयोग किए गए पथ विभाजक को पुनः प्राप्त करता है, आमतौर पर विंडोज़ पर अर्धविराम (;)।
os.access(exe, os.X_OK) जाँचता है कि कोई फ़ाइल पायथन में निष्पादन योग्य है या नहीं।

विंडोज़ कमांड लाइन स्क्रिप्ट को समझना

प्रदान की गई स्क्रिप्ट में, प्रत्येक को UNIX की कार्यक्षमता की नकल करने के लिए डिज़ाइन किया गया है कमांड, जिसका उपयोग कमांड के पूर्ण पथ का पता लगाने के लिए किया जाता है। पहली स्क्रिप्ट विंडोज़ कमांड प्रॉम्प्ट के लिए एक बैच फ़ाइल का उपयोग करती है। इसकी शुरुआत होती है पर्यावरण परिवर्तनीय परिवर्तनों को स्थानीयकृत करना। स्क्रिप्ट तब कमांड नाम को वेरिएबल पर सेट करती है और जाँचता है कि क्या यह खाली है। for %%i in ("%command%") do लूप सूचीबद्ध निर्देशिकाओं के माध्यम से पुनरावृत्त होता है पर्यावरणपरिवर्ती तारक। इस लूप के भीतर, जाँचता है कि निष्पादन योग्य फ़ाइल लूप की वर्तमान निर्देशिका में मौजूद है या नहीं। यदि पाया जाता है, तो यह पथ आउटपुट करता है और बाहर निकल जाता है।

पॉवरशेल में लिखी गई दूसरी स्क्रिप्ट, पैरामीटर्स को परिभाषित करने से शुरू होती है . स्क्रिप्ट कमांड नाम को पुनः प्राप्त करती है और विभाजित करती है पर्यावरण चर का उपयोग करके अलग-अलग निर्देशिकाओं में . Join-Path कमांड संभावित निष्पादन योग्य पथ बनाने के लिए प्रत्येक निर्देशिका को कमांड नाम के साथ जोड़ता है। इसके बाद इसका उपयोग होता है इन पथों के अस्तित्व की जाँच करने के लिए। यदि निष्पादन योग्य पाया जाता है, तो यह पथ को आउटपुट करता है और बाहर निकल जाता है। पायथन में लिखी गई तीसरी स्क्रिप्ट एक फ़ंक्शन को परिभाषित करती है में सूचीबद्ध निर्देशिकाओं में कमांड खोजने के लिए पर्यावरणपरिवर्ती तारक। यह उपयोगकर्ता है os.pathsep सिस्टम का पथ विभाजक प्राप्त करने के लिए और निष्पादन योग्यता की जांच करने के लिए. यह स्क्रिप्ट कमांड-लाइन तर्क के साथ कमांड नाम निर्दिष्ट करते हुए चलती है, और यदि कमांड मिल जाती है तो यह पूरा पथ प्रिंट करती है।

विंडोज़ में कमांड का पूरा पथ निर्धारित करना

विंडोज़ कमांड प्रॉम्प्ट का उपयोग करना

@echo off
setlocal
set "command=%1"
if "%command%"=="" (
  echo Usage: %~n0 command_name
  exit /b 1
)
for %%i in ("%command%") do (
  for %%j in (".;%PATH:;=;.;%;") do (
    if exist "%%j\%%~i.exe" (
      echo %%j\%%~i.exe
      exit /b 0
    )
  )
)
echo %command% not found
endlocal

PowerShell में कमांड पथ का पता लगाना

पॉवरशेल स्क्रिप्ट का उपयोग करना

param (
  [string]$command
)
if (-not $command) {
  Write-Output "Usage: .\script.ps1 command_name"
  exit 1
}
$path = $env:PATH -split ';'
foreach ($dir in $path) {
  $exe = Join-Path $dir $command.exe
  if (Test-Path $exe) {
    Write-Output $exe
    exit 0
  }
}
Write-Output "$command not found"

पायथन के साथ कमांड स्थान ढूँढना

पायथन स्क्रिप्ट का उपयोग करना

import os
import sys
def which(command):
    path = os.getenv('PATH')
    for dir in path.split(os.pathsep):
        exe = os.path.join(dir, command)
        if os.path.isfile(exe) and os.access(exe, os.X_OK):
            return exe
    return None
if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python script.py command_name")
        sys.exit(1)
    command = sys.argv[1]
    path = which(command)
    if path:
        print(path)
    else:
        print(f"{command} not found")

विंडोज़ में उन्नत पथ प्रबंधन तकनीकें

किसी कमांड का पूरा पथ ढूँढ़ने से परे, उसे प्रबंधित करना टकराव से बचने और स्क्रिप्ट के सुचारू निष्पादन को सुनिश्चित करने के लिए पर्यावरण चर महत्वपूर्ण है। विंडोज़ में, कोई भी इसे संपादित करने के लिए सिस्टम प्रॉपर्टीज़ इंटरफ़ेस का उपयोग कर सकता है परिवर्तनीय, लेकिन बार-बार परिवर्तन के लिए यह बोझिल हो सकता है। इसके बजाय, का उपयोग कर कमांड प्रॉम्प्ट या पॉवरशेल में कमांड इन वेरिएबल्स को प्रबंधित करने का अधिक कुशल तरीका प्रदान कर सकता है। setx कमांड उपयोगकर्ताओं को पर्यावरण चर को लगातार सेट करने की अनुमति देता है, जो उन स्क्रिप्ट्स के लिए उपयोगी है जिनके लिए विशिष्ट टूल या एप्लिकेशन को प्राथमिकता देने की आवश्यकता होती है .

एक अन्य उपयोगी उपकरण है कमांड, जो एक अंतर्निहित विंडोज़ उपयोगिता है जो यूनिक्स के समान व्यवहार करती है आज्ञा। कमांड खोज मानदंड से मेल खाने वाली निष्पादन योग्य फ़ाइलों के पथ का पता लगा सकता है और प्रदर्शित कर सकता है। उदाहरण के लिए, दौड़ना where python कमांड प्रॉम्प्ट में पाए जाने वाले पायथन निष्पादन योग्य सभी स्थानों को सूचीबद्ध किया जाएगा . किसी टूल के एकाधिक संस्करण स्थापित होने पर विवादों को पहचानने और हल करने में यह विशेष रूप से सहायक हो सकता है। के प्रयोग को मिलाकर और , उपयोगकर्ता अपने वातावरण को बेहतर ढंग से प्रबंधित कर सकते हैं और यह सुनिश्चित कर सकते हैं कि कमांड के सही संस्करण निष्पादित किए गए हैं।

कमांड पथ समस्याओं के बारे में अक्सर पूछे जाने वाले प्रश्न

  1. क्या है विंडोज़ में कमांड?
  2. विंडोज़ में कमांड खोज मानदंड से मेल खाने वाली निष्पादन योग्य फ़ाइलों के पथ का पता लगाता है और प्रदर्शित करता है।
  3. मैं इसे कैसे संपादित करूं पर्यावरणपरिवर्ती तारक?
  4. आप इसे संपादित कर सकते हैं सिस्टम गुण इंटरफ़ेस के माध्यम से या का उपयोग करके चर कमांड प्रॉम्प्ट या पॉवरशेल में कमांड।
  5. क्या मैं किसी कमांड का पथ खोजने के लिए PowerShell का उपयोग कर सकता हूँ?
  6. हाँ, PowerShell का उपयोग एक स्क्रिप्ट का उपयोग करके कमांड का पथ खोजने के लिए किया जा सकता है जो सूचीबद्ध निर्देशिकाओं के माध्यम से पुनरावृत्त होता है पर्यावरणपरिवर्ती तारक।
  7. के बीच क्या अंतर है और कमांड प्रॉम्प्ट में?
  8. कमांड केवल वर्तमान सत्र के लिए पर्यावरण चर सेट करता है उन्हें सत्रों में लगातार सेट करता है।
  9. मैं कैसे जांच सकता हूं कि कोई फ़ाइल पायथन में निष्पादन योग्य है या नहीं?
  10. आप जांच सकते हैं कि कोई फ़ाइल पायथन में निष्पादन योग्य है या नहीं .
  11. क्या करता है पायथन में करें?
  12. विशेषता ऑपरेटिंग सिस्टम द्वारा उपयोग किया जाने वाला पथ विभाजक प्रदान करती है, जो विंडोज़ पर अर्धविराम (;) है।

संघर्षों से बचने और सही स्क्रिप्ट निष्पादन सुनिश्चित करने के लिए विंडोज़ कमांड लाइन पर कमांड पथों को प्रभावी ढंग से प्रबंधित करना और उनका पता लगाना महत्वपूर्ण है। बैच फ़ाइलों, पॉवरशेल स्क्रिप्ट और पायथन का उपयोग करके, उपयोगकर्ता UNIX 'कौन सा' कमांड की कार्यक्षमता को दोहरा सकते हैं। इसके अतिरिक्त, व्हेयर कमांड जैसे टूल का लाभ उठाना और PATH वेरिएबल को प्रबंधित करना इस प्रक्रिया को और अधिक सुव्यवस्थित कर सकता है। ये तकनीकें स्वच्छ और कुशल विकास वातावरण बनाए रखने के लिए मजबूत समाधान प्रदान करती हैं, जिससे उपयोगकर्ताओं को पथ-संबंधित मुद्दों को शीघ्रता से पहचानने और हल करने में मदद मिलती है।