परिचय: विंडोज़ पर छिपे हुए कमांड पथ को उजागर करना
विंडोज़ कमांड लाइन पर स्क्रिप्ट और कमांड के साथ काम करने वाले डेवलपर्स के लिए पथ टकराव एक लगातार मुद्दा हो सकता है। जब आपकी एक स्क्रिप्ट पथ में स्थान के कारण किसी अन्य प्रोग्राम द्वारा ढक दी जाती है, तो किसी दिए गए कमांड के पूर्ण पथ की पहचान करना महत्वपूर्ण हो जाता है। यह परिदृश्य अक्सर उपयोगकर्ताओं को 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 की कार्यक्षमता की नकल करने के लिए डिज़ाइन किया गया है which कमांड, जिसका उपयोग कमांड के पूर्ण पथ का पता लगाने के लिए किया जाता है। पहली स्क्रिप्ट विंडोज़ कमांड प्रॉम्प्ट के लिए एक बैच फ़ाइल का उपयोग करती है। इसकी शुरुआत होती है setlocal पर्यावरण परिवर्तनीय परिवर्तनों को स्थानीयकृत करना। स्क्रिप्ट तब कमांड नाम को वेरिएबल पर सेट करती है %command% और जाँचता है कि क्या यह खाली है। for %%i in ("%command%") do लूप सूचीबद्ध निर्देशिकाओं के माध्यम से पुनरावृत्त होता है PATH पर्यावरणपरिवर्ती तारक। इस लूप के भीतर, if exist "%%j\%%~i.exe" जाँचता है कि निष्पादन योग्य फ़ाइल लूप की वर्तमान निर्देशिका में मौजूद है या नहीं। यदि पाया जाता है, तो यह पथ आउटपुट करता है और बाहर निकल जाता है।
पॉवरशेल में लिखी गई दूसरी स्क्रिप्ट, पैरामीटर्स को परिभाषित करने से शुरू होती है param. स्क्रिप्ट कमांड नाम को पुनः प्राप्त करती है और विभाजित करती है PATH पर्यावरण चर का उपयोग करके अलग-अलग निर्देशिकाओं में $env:PATH -split ';'. Join-Path कमांड संभावित निष्पादन योग्य पथ बनाने के लिए प्रत्येक निर्देशिका को कमांड नाम के साथ जोड़ता है। इसके बाद इसका उपयोग होता है Test-Path इन पथों के अस्तित्व की जाँच करने के लिए। यदि निष्पादन योग्य पाया जाता है, तो यह पथ को आउटपुट करता है और बाहर निकल जाता है। पायथन में लिखी गई तीसरी स्क्रिप्ट एक फ़ंक्शन को परिभाषित करती है which में सूचीबद्ध निर्देशिकाओं में कमांड खोजने के लिए PATH पर्यावरणपरिवर्ती तारक। यह उपयोगकर्ता है os.pathsep सिस्टम का पथ विभाजक प्राप्त करने के लिए और os.access निष्पादन योग्यता की जांच करने के लिए. यह स्क्रिप्ट कमांड-लाइन तर्क के साथ कमांड नाम निर्दिष्ट करते हुए चलती है, और यदि कमांड मिल जाती है तो यह पूरा पथ प्रिंट करती है।
विंडोज़ में कमांड का पूरा पथ निर्धारित करना
विंडोज़ कमांड प्रॉम्प्ट का उपयोग करना
@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")
विंडोज़ में उन्नत पथ प्रबंधन तकनीकें
किसी कमांड का पूरा पथ ढूँढ़ने से परे, उसे प्रबंधित करना PATH टकराव से बचने और स्क्रिप्ट के सुचारू निष्पादन को सुनिश्चित करने के लिए पर्यावरण चर महत्वपूर्ण है। विंडोज़ में, कोई भी इसे संपादित करने के लिए सिस्टम प्रॉपर्टीज़ इंटरफ़ेस का उपयोग कर सकता है PATH परिवर्तनीय, लेकिन बार-बार परिवर्तन के लिए यह बोझिल हो सकता है। इसके बजाय, का उपयोग कर setx कमांड प्रॉम्प्ट या पॉवरशेल में कमांड इन वेरिएबल्स को प्रबंधित करने का अधिक कुशल तरीका प्रदान कर सकता है। setx कमांड उपयोगकर्ताओं को पर्यावरण चर को लगातार सेट करने की अनुमति देता है, जो उन स्क्रिप्ट्स के लिए उपयोगी है जिनके लिए विशिष्ट टूल या एप्लिकेशन को प्राथमिकता देने की आवश्यकता होती है PATH.
एक अन्य उपयोगी उपकरण है where कमांड, जो एक अंतर्निहित विंडोज़ उपयोगिता है जो यूनिक्स के समान व्यवहार करती है which आज्ञा। where कमांड खोज मानदंड से मेल खाने वाली निष्पादन योग्य फ़ाइलों के पथ का पता लगा सकता है और प्रदर्शित कर सकता है। उदाहरण के लिए, दौड़ना where python कमांड प्रॉम्प्ट में पाए जाने वाले पायथन निष्पादन योग्य सभी स्थानों को सूचीबद्ध किया जाएगा PATH. किसी टूल के एकाधिक संस्करण स्थापित होने पर विवादों को पहचानने और हल करने में यह विशेष रूप से सहायक हो सकता है। के प्रयोग को मिलाकर setx और where, उपयोगकर्ता अपने वातावरण को बेहतर ढंग से प्रबंधित कर सकते हैं और यह सुनिश्चित कर सकते हैं कि कमांड के सही संस्करण निष्पादित किए गए हैं।
कमांड पथ समस्याओं के बारे में अक्सर पूछे जाने वाले प्रश्न
- क्या है where विंडोज़ में कमांड?
- where विंडोज़ में कमांड खोज मानदंड से मेल खाने वाली निष्पादन योग्य फ़ाइलों के पथ का पता लगाता है और प्रदर्शित करता है।
- मैं इसे कैसे संपादित करूं PATH पर्यावरणपरिवर्ती तारक?
- आप इसे संपादित कर सकते हैं PATH सिस्टम गुण इंटरफ़ेस के माध्यम से या का उपयोग करके चर setx कमांड प्रॉम्प्ट या पॉवरशेल में कमांड।
- क्या मैं किसी कमांड का पथ खोजने के लिए PowerShell का उपयोग कर सकता हूँ?
- हाँ, PowerShell का उपयोग एक स्क्रिप्ट का उपयोग करके कमांड का पथ खोजने के लिए किया जा सकता है जो सूचीबद्ध निर्देशिकाओं के माध्यम से पुनरावृत्त होता है PATH पर्यावरणपरिवर्ती तारक।
- के बीच क्या अंतर है setx और set कमांड प्रॉम्प्ट में?
- set कमांड केवल वर्तमान सत्र के लिए पर्यावरण चर सेट करता है setx उन्हें सत्रों में लगातार सेट करता है।
- मैं कैसे जांच सकता हूं कि कोई फ़ाइल पायथन में निष्पादन योग्य है या नहीं?
- आप जांच सकते हैं कि कोई फ़ाइल पायथन में निष्पादन योग्य है या नहीं os.access(file, os.X_OK).
- क्या करता है os.pathsep पायथन में करें?
- os.pathsep विशेषता ऑपरेटिंग सिस्टम द्वारा उपयोग किया जाने वाला पथ विभाजक प्रदान करती है, जो विंडोज़ पर अर्धविराम (;) है।
अंतिम विचार:
संघर्षों से बचने और सही स्क्रिप्ट निष्पादन सुनिश्चित करने के लिए विंडोज़ कमांड लाइन पर कमांड पथों को प्रभावी ढंग से प्रबंधित करना और उनका पता लगाना महत्वपूर्ण है। बैच फ़ाइलों, पॉवरशेल स्क्रिप्ट और पायथन का उपयोग करके, उपयोगकर्ता UNIX 'कौन सा' कमांड की कार्यक्षमता को दोहरा सकते हैं। इसके अतिरिक्त, व्हेयर कमांड जैसे टूल का लाभ उठाना और PATH वेरिएबल को प्रबंधित करना इस प्रक्रिया को और अधिक सुव्यवस्थित कर सकता है। ये तकनीकें स्वच्छ और कुशल विकास वातावरण बनाए रखने के लिए मजबूत समाधान प्रदान करती हैं, जिससे उपयोगकर्ताओं को पथ-संबंधित मुद्दों को शीघ्रता से पहचानने और हल करने में मदद मिलती है।