العثور على المسار الكامل للأمر على سطر أوامر Windows

العثور على المسار الكامل للأمر على سطر أوامر Windows
العثور على المسار الكامل للأمر على سطر أوامر Windows

مقدمة: الكشف عن مسارات الأوامر المخفية على نظام التشغيل Windows

يمكن أن تكون تعارضات المسارات مشكلة متكررة للمطورين الذين يعملون مع البرامج النصية والأوامر في سطر أوامر Windows. عندما يطغى برنامج آخر على أحد البرامج النصية الخاصة بك بسبب موضعه في المسار، يصبح من الضروري تحديد المسار الكامل لأمر معين. غالبًا ما يقود هذا السيناريو المستخدمين إلى البحث عن ما يعادل أمر UNIX "what"، مما يبسط تحديد المسار الدقيق للأمر.

في أنظمة UNIX، يتم استخدام الأمر "what" لعرض المسار الكامل لأمر محدد، مما يساعد في حل مشكلات التظليل هذه. ومع ذلك، قد يتساءل مستخدمو Windows عما إذا كانت هناك أداة مساعدة مماثلة متاحة على نظامهم الأساسي. في المناقشة التالية، سنستكشف الخيارات المتاحة على نظام التشغيل Windows لتحقيق نفس الوظيفة ومساعدتك في إدارة المشكلات المتعلقة بالمسار بفعالية.

يأمر وصف
setlocal يبدأ توطين متغيرات البيئة في ملف دفعي، مع ضمان عدم تأثير التغييرات على البيئة العالمية.
for %%i in ("%command%") do يتكرر من خلال مجموعة العناصر المحددة، مما يسمح بإجراء العمليات على كل عنصر.
if exist "%%j\%%~i.exe" يتحقق من وجود ملف معين في المسار المحدد.
param يحدد ويستعيد المعلمات التي تم تمريرها إلى برنامج PowerShell النصي.
Join-Path يجمع سلسلتين أو أكثر في مسار، ويتعامل مع الأحرف الفاصلة بشكل مناسب في PowerShell.
Test-Path التحقق من وجود مسار أو ملف محدد في PowerShell.
os.pathsep يسترد فاصل المسار الذي يستخدمه نظام التشغيل، وعادة ما يكون عبارة عن فاصلة منقوطة (؛) على نظام التشغيل Windows.
os.access(exe, os.X_OK) يتحقق مما إذا كان الملف قابلاً للتنفيذ في بايثون.

فهم البرامج النصية لسطر أوامر Windows

في البرامج النصية المقدمة، تم تصميم كل منها لتقليد وظائف UNIX which الأمر، والذي يستخدم لتحديد المسار الكامل للأمر. يستخدم البرنامج النصي الأول ملف دفعي لموجه أوامر Windows. يبدأ ب setlocal لتوطين تغييرات متغيرات البيئة. يقوم البرنامج النصي بعد ذلك بتعيين اسم الأمر للمتغير %command% ويتحقق مما إذا كان فارغًا. ال for %%i in ("%command%") do تتكرر الحلقة من خلال الدلائل المدرجة في ملف PATH متغيرات البيئة. ضمن هذه الحلقة، if exist "%%j\%%~i.exe" يتحقق من وجود الملف القابل للتنفيذ في الدليل الحالي للحلقة. إذا وجدت، فإنه يخرج المسار والمخارج.

يبدأ البرنامج النصي الثاني، المكتوب في PowerShell، بتعريف المعلمات باستخدام param. يسترد البرنامج النصي اسم الأمر ويقسم الملف PATH متغير البيئة إلى الدلائل الفردية باستخدام $env:PATH -split ';'. ال Join-Path يجمع الأمر كل دليل مع اسم الأمر لتكوين مسارات محتملة قابلة للتنفيذ. ويستخدم بعد ذلك Test-Path للتحقق من وجود هذه المسارات. إذا تم العثور على الملف القابل للتنفيذ، فإنه يقوم بإخراج المسار والخروج. يحدد النص الثالث، المكتوب بلغة بايثون، دالة which للبحث عن الأمر في الدلائل المدرجة في PATH متغيرات البيئة. يستخدم os.pathsep للحصول على فاصل مسار النظام و os.access للتحقق من قابلية التنفيذ. يتم تشغيل هذا البرنامج النصي باستخدام وسيطة سطر أوامر تحدد اسم الأمر، ويطبع المسار الكامل إذا تم العثور على الأمر.

تحديد المسار الكامل للأمر في نظام التشغيل Windows

باستخدام موجه أوامر ويندوز

@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

باستخدام برنامج 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")

تقنيات إدارة المسار المتقدمة في نظام التشغيل Windows

بالإضافة إلى مجرد العثور على المسار الكامل للأمر، فإن إدارة PATH يعد متغير البيئة أمرًا بالغ الأهمية لتجنب التعارضات وضمان التنفيذ السلس للبرامج النصية. في نظام التشغيل Windows، يمكن للمرء استخدام واجهة خصائص النظام لتحرير ملف PATH متغير، ولكن هذا قد يكون مرهقًا للتغييرات المتكررة. بدلا من ذلك، باستخدام setx يمكن أن يوفر الأمر الموجود في موجه الأوامر أو PowerShell طريقة أكثر فعالية لإدارة هذه المتغيرات. ال setx يسمح الأمر للمستخدمين بتعيين متغيرات البيئة باستمرار، وهو أمر مفيد للبرامج النصية التي تتطلب أدوات أو تطبيقات محددة لإعطاء الأولوية في PATH.

أداة أخرى مفيدة هي where الأمر، وهو أداة مساعدة مضمنة في Windows تعمل بشكل مشابه لنظام UNIX which يأمر. ال where يمكن للأمر تحديد وعرض مسارات الملفات القابلة للتنفيذ التي تطابق معايير البحث. على سبيل المثال، تشغيل where python في موجه الأوامر سوف يسرد جميع مواقع ملف Python القابل للتنفيذ الموجود في ملف PATH. يمكن أن يكون هذا مفيدًا بشكل خاص في تحديد التعارضات وحلها عند تثبيت إصدارات متعددة من الأداة. من خلال الجمع بين استخدام setx و where، يمكن للمستخدمين إدارة بيئتهم بشكل أفضل والتأكد من تنفيذ الإصدارات الصحيحة من الأوامر.

الأسئلة المتداولة حول مشكلات مسار الأوامر

  1. ما هو where الأمر في ويندوز؟
  2. ال where يقوم الأمر في Windows بتحديد وعرض مسارات الملفات القابلة للتنفيذ المطابقة لمعايير البحث.
  3. كيف أقوم بتحرير PATH متغيرات البيئة؟
  4. يمكنك تحرير PATH المتغير من خلال واجهة خصائص النظام أو باستخدام setx الأمر في موجه الأوامر أو PowerShell.
  5. هل يمكنني استخدام PowerShell للعثور على مسار الأمر؟
  6. نعم، يمكن استخدام PowerShell للعثور على مسار الأمر باستخدام برنامج نصي يتكرر عبر الدلائل المدرجة في PATH متغيرات البيئة.
  7. ماهو الفرق بين setx و set في موجه الأوامر؟
  8. ال set يقوم الأمر بتعيين متغيرات البيئة للجلسة الحالية فقط، بينما setx يضبطها باستمرار عبر الجلسات.
  9. كيف يمكنني التحقق مما إذا كان الملف قابلاً للتنفيذ في بايثون؟
  10. يمكنك التحقق مما إذا كان الملف قابلاً للتنفيذ في Python باستخدام os.access(file, os.X_OK).
  11. ماذا فعلت os.pathsep تفعل في بايثون؟
  12. ال os.pathsep توفر السمة فاصل المسار الذي يستخدمه نظام التشغيل، وهو عبارة عن فاصلة منقوطة (؛) على نظام التشغيل Windows.

افكار اخيرة:

تعد إدارة مسارات الأوامر وتحديد موقعها بشكل فعال على سطر أوامر Windows أمرًا ضروريًا لتجنب التعارضات وضمان التنفيذ الصحيح للبرنامج النصي. من خلال استخدام الملفات الدفعية والبرامج النصية PowerShell وPython، يمكن للمستخدمين تكرار وظيفة أمر UNIX "what". بالإضافة إلى ذلك، يمكن الاستفادة من أدوات مثل الأمر Where وإدارة متغير PATH في تبسيط هذه العملية. توفر هذه التقنيات حلولاً قوية للحفاظ على بيئة تطوير نظيفة وفعالة، مما يساعد المستخدمين على تحديد المشكلات المتعلقة بالمسار وحلها بسرعة.