it-swarm.asia

استخدام٪ PROGRAMFILES (x86)٪ على نظام التشغيل Windows OS 32bit

ماذا يحدث عند استخدام متغير البيئة %PROGRAMFILES(x86)% على نظام التشغيل Windows 32 بت (أي ، الإصدارات الأقدم من Windows مثل Windows XP و Vista)؟

آمل أن يتم حل ذلك ببساطة إلى: C:/Program Files. هل سيحدث هذا؟

31
sazr

وفقًا لهذا متغير البيئة %PROGRAMFILES(x86)% متاح فقط على أنظمة 64 بت.

ومع ذلك ، إذا كنت تستخدم نظام 64 بت وتستخدم %PROGRAMFILES% ، فإن النتيجة التي تحصل عليها تعتمد على ما إذا كانت العملية التي تطلب متغير البيئة هي 32 بت أو 64 بت.

إذن من عملية 64 بت على نظام 64 بت ، ستحصل على C:\Program Files ، ومن عملية 32 بت على نظام 64 بت ، ستحصل على C:\Program Files (x86) ، ومن 32 بت على نظام 32 بت ستحصل على C:\Program Files.

إذا لم ينجح ذلك ، فبإمكانك التعليق على سؤالك الأصلي أو تعديله لجعله محددًا ما تحاول القيام به. كما هو قائم حاليًا ، فإن إجابة سؤالك هي "لا".

44
Roger Rowland

Keith Hill أجاب على هذا السؤال هنا ، ملخص:

${env:ProgramFiles(x86)} غير معرف على جهاز 32 بت

إذا كنت ترغب دائمًا في وضع/الحصول على البيانات من/إلى دليل x86 ، فيمكنك استخدام هذا الرمز لتحديد مسارات الملفات:

$file = "\file"
if ("${Env:ProgramFiles(x86)}")
{
    $fullPath = "${Env:ProgramFiles(x86)}\$file"
}
else
{
    $fullPath = "${Env:ProgramFiles}\$file"
}
3
agabrys

نظرًا لأن %ProgramFiles(x86)% غير معرّف على Windows 7 32 بت ، فإليك حل للمشكلة التي توصلت إليها:

SET MyPath="%ProgramFiles(x86)%\MyFolder\MyApplication.exe"
rem workaround for Windows7 32 bit:
IF NOT DEFINED ProgramFiles(x86) SET MyPath="%PROGRAMFILES%\MyFolder\MyApplication.exe"

استخدام الحالة: أريد الاتصال بتطبيق من ملف دفعي مثبت:

  • على ويندوز 7 32 بت في C:\ملفات البرنامج\MyFolder\MyApplication.exe
  • على ويندوز 7 64 بت في C:\ملفات البرنامج (x86)\MyFolder\MyApplication.exe

من هنا %MyPath% يشير دائما إلى المسار الصحيح.

2
uceumern