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

Batch

مقدمة: الكشف عن مسارات الأوامر المخفية على نظام التشغيل 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 الأمر، والذي يستخدم لتحديد المسار الكامل للأمر. يستخدم البرنامج النصي الأول ملف دفعي لموجه أوامر Windows. يبدأ ب لتوطين تغييرات متغيرات البيئة. يقوم البرنامج النصي بعد ذلك بتعيين اسم الأمر للمتغير ويتحقق مما إذا كان فارغًا. ال for %%i in ("%command%") do تتكرر الحلقة من خلال الدلائل المدرجة في ملف متغيرات البيئة. ضمن هذه الحلقة، يتحقق من وجود الملف القابل للتنفيذ في الدليل الحالي للحلقة. إذا وجدت، فإنه يخرج المسار والمخارج.

يبدأ البرنامج النصي الثاني، المكتوب في PowerShell، بتعريف المعلمات باستخدام . يسترد البرنامج النصي اسم الأمر ويقسم الملف متغير البيئة إلى الدلائل الفردية باستخدام . ال Join-Path يجمع الأمر كل دليل مع اسم الأمر لتكوين مسارات محتملة قابلة للتنفيذ. ويستخدم بعد ذلك للتحقق من وجود هذه المسارات. إذا تم العثور على الملف القابل للتنفيذ، فإنه يقوم بإخراج المسار والخروج. يحدد النص الثالث، المكتوب بلغة بايثون، دالة للبحث عن الأمر في الدلائل المدرجة في متغيرات البيئة. يستخدم os.pathsep للحصول على فاصل مسار النظام و للتحقق من قابلية التنفيذ. يتم تشغيل هذا البرنامج النصي باستخدام وسيطة سطر أوامر تحدد اسم الأمر، ويطبع المسار الكامل إذا تم العثور على الأمر.

تحديد المسار الكامل للأمر في نظام التشغيل 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

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

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

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

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

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