سؤال كيف يمكنني تحديد ما إذا كان Windows الخاص بي هو 32 بت أو 64 بت باستخدام أمر؟ [مكرر]


التكرارات الممكنة:
كيفية معرفة ما إذا كان الكمبيوتر يحتوي على وحدة المعالجة المركزية 64 بت أو نظام التشغيل
كشف Windows Server الإصدار 32/64 بت في CLI
إصدار نظام التشغيل: 32 بت أو 64 بت؟ 

كيف يمكنني تحديد ما إذا كان نظام Windows الخاص بي هو 32 بت أو 64 بت من سطر الأوامر؟

أريد أن أعرف الشاهد من نظام التشغيل ، وليس الأجهزة.

هذا السؤال ينطبق بشكل صارم على سطر الاوامر فقط، لا أريد أي حلول واجهة المستخدم الرسومية.


69
2017-08-11 17:44


الأصل


إنه أمر محزن systeminfo لا تدرج هذا. - Tom Wijsman
MaQleod - سأجادل شخصيًا بأن مجرد الإجابة هي التي تناسبكما ، وأن الأسئلة ليست نسخًا طبق الأصل تمامًا لأن هذا السؤال سيناريو أكثر تحديدًا. لا أعرف ما إذا كانت إجابتك تتطابق تمامًا مع "سطر الأوامر فقط" نظرًا لأنها تحتاج إلى أداة مساعدة إضافية ، ولكن إذا كنت أنا سأقوم بنشرها كإجابة هنا. - Shinrai
MaQleod أنا شخصيا لن أسميها نسخة مكررة لأنها تطلب حلًا محددًا لسطر الأوامر فقط. يحتوي السؤال الذي ربطته على إجابة مقبولة لحل واجهة المستخدم الرسومية. - Ben Richards
شكرا لك على اجابات + تحرير. اخترت الإجابة الأنسب لحالتي. - Negative
انتهى بي الأمر العثور على ما هو مكررة بالضبط من هذا. (يشير المنشور المرتبط بشكل خاص إلى سطر الأوامر فقط ، بل إنه يوفر الحل المحدد لي). - Shinrai


الأجوبة:


من موجه أوامر غير مقيد ، اكتب wmic os get osarchitecture. يبدو الإخراج واضحًا جدًا ، على ما أعتقد - سيعود إما "32 بت" أو "64 بت".


107
2017-08-11 17:53



هذا يبدو وكأنه الحل الذي سأستخدمه ... الآن بعد أن علمت به. - James T Snell
أو للقيام بنفس الشيء في Powershell إذا كنت تستخدم جهاز W7 أو نظام تشغيل Windows آخر حيث قمت بتثبيت PS: (gwmi win32_OperatingSystem) .OSArchitecture - EBGreen
لا يعمل هنا على نظام التشغيل Windows XP. خطأ المرتجعات: استعلام غير صالح. - user606723
مذكرة قانونية: يجب يكون مسؤولا لتشغيل WMIC. - Breakthrough
@ user606723 - ليس لدي تثبيت XP في متناول اليد لاختبار ، ولكن لم أكن أعتقد أن خطافات WMI قد تغيرت كثيرا. لم يحدد OP نظام التشغيل ، لكي أكون منصفا ، ولكن يجب أن أختبر هذا بنفسي. - Shinrai


سيظهر برنامج وحدة التحكم systeminfo هذا. ستحتاج إلى البحث عن سطر "نوع النظام:". بالنسبة لأنظمة 32 بت ، سيقول "جهاز كمبيوتر يستند إلى x86. بالنسبة لأنظمة 64 بت ، سيقول" x64-based PC ".

أو ، لأسلوب أسرع ، يمكنك ببساطة التحقق من متغير البيئة PROCESSOR_ARCHITECTURE. ستقول أنظمة 64 بت أن AMD64 وأنظمة 32 بت يجب أن تقول "x86". للتحقق من ذلك يمكنك ببساطة ترديد ذلك:

echo %PROCESSOR_ARCHITECTURE%

ديفيد وانغ أكثر في مدونات MSDN توسع على هذا HOWTO: كشف عملية الشهود


50
2017-08-11 17:57



ألا يظهر ذلك نوع المعالج ، وليس نوع نظام التشغيل المثبت؟ - Shinrai
لا أعتقد ذلك ، لأن وضع 32 بت و وضع 64 بت هي أوضاع مختلفة قد يكون المعالج فيها. يمكن أن يكون المعالج في وضع 32 بت ، ولا أعتقد أن نظام التشغيل سيعرف بطبيعته إذا كان بإمكانه الانتقال إلى وضع 64 بت. ومع ذلك ، إنها نقطة جيدة ، إنه أمر يجب اختباره. كما أعلم أن أخي لديه تثبيت Win 7 بت 32 بت على معالج قادر على 64 بت ، سأطلب منه أن يتحقق لي. - Ben Richards
نعم ، لست متأكدًا (وبالتالي الرد المؤقت) ولسوء الحظ ، ليس لدي أي شيء مفيد للتحقق من نفسي. اعتقدت أن هذا كان مجرد سلسلة قام معالج معين بالإبلاغ عنها ، بغض النظر عن كيفية عملها. سيكون من المفيد أن نعرف على وجه اليقين. - Shinrai
إذا قمت بتشغيل نظام تشغيل 32 بت على نظام 64 بت ، فسيظل٪ PROCESSOR_ARCHITECTURE٪ "x86". في معظم الحالات ، يمكن لنظام تشغيل 64 بت تشغيل برامج 32 بت ، لكن هذا يعمل ليس العمل في الاتجاه الآخر. - bobbymcr
التصويت حتى echo٪ PROCESSOR_ARCHITECTURE٪  يعمل حتى في الأمر sql server command أيضًا wmic os الحصول على osarchitecture في وقت ما لا يعمل في شل القيادة خادم SQL - Durai Amuthan.H


يمكنك معرفة ما اذا كان %PROGRAMFILES(x86)% متغير البيئة معلنة. على أنظمة 32 بت ، وسوف ليس يتم تعريف (فقط %PROGRAMFILES% سوف يكون). هذا أيضاً أكثر أماناً ثم فقط التحقق من وجود دليل ملفات البرامج (x 86) ، نظرًا لأنه يمكن نقله (أو حتى حذفه).


8
2017-08-11 17:54



أفضل حل من التحقق من وجود مجلد ، نعم. (لا أرغب في استخدام حل بديل ، ولكن إذا كنت ستستخدم هذا الحل.) - Shinrai
صيد جيد جدًا ... لديّ دفعة تحقق من هذا المجلد ، لكن هذا سيكون بالتأكيد أكثر أناقة. - WernerCD
يمكنك أيضا مقارنة %PROGRAMFILES(x86)% و %PROGRAMFILES% المتغيرات لمعرفة ما إذا كان قد تم بدء cmd في وضع 32 بت أو 64 بت. (نظرًا لأنه على نوافذ 64 بت ، ما زال بإمكانك تشغيل 32bit cmd.) مثال: IF %PROGRAMFILES(x86)% == %PROGRAMFILES% => 32bit كمد (التي تعمل على ويندوز 64 بت .....) IF %PROGRAMFILES(x86)% <> %PROGRAMFILES% => 64bit cmd. - Sam Hasler


لقد قمت بكتابة تطبيق سطر أوامر بسيط يخبرك ما إذا كان المعالج ونظام التشغيل الخاص بك إما 64 بت أو 32 بت.

مثال على القراءة:

C:\bitchecker
The CPU is 64-bit and the OS is 32-bit

لكل طلب ، إليك المصدر الذي تم تجميعه باستخدام خيار CLI ، مكتوبًا في AutoIt.

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)

وهنا مثال إذا كنت ترغب في التبديل لوحدة المعالجة المركزية (CPU) ونظام التشغيل (-o):

Dim $CPUARCH, $OSARCH

If @CPUARCH = "x86" Then
    $CPUARCH = "32-bit"
Else
    $CPUARCH = "64-bit"
EndIf

If @OSARCH = "x86" Then
    $OSARCH = "32-bit"
Else
    $OSARCH = "64-bit"
EndIf

If $CmdLine[0] = 0 Then
    ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
Else
    Select
        Case $CmdLine[1] = "-c"
            ConsoleWrite($CPUARCH)
        Case $CmdLine[1] = "-o"
            ConsoleWrite($OSARCH)
        Case Else
            ConsoleWrite("The CPU is " & $CPUARCH & " and the OS is " & $OSARCH)
    EndSelect
EndIf

8
2017-08-11 18:21



سأكون لطيفًا إذا جاء الملف مع المصدر. إنها بالأحرى مثيرة للقلق لتنزيل exe صغير ، ونشرها على mediafire ، وتشغيلها. - artifex
artifex ، المصدر المضاف. - MaQleod
يمكن أن يكون خطأ U_U Jocking :) - Pitto
سيكون من اللطيف معرفة ما يستخدمه AutoIT API داخليًا .. - user606723


ماذا لو كنت فقط تحقق من وجود

٪ SYSTEMROOT٪ \ Program Files (x 86)

أو أيا كان يطلق عليه؟


3
2017-08-11 17:51



ليس حلا عظيما ، ولكن ربما أعمال سريعة وقذرة لمشكلتك الخاصة؟ - James T Snell
لقد ضربتني بهذا الحل ، +1. يمكن أن يكون شكل قصير dir \Program *. - Tom Wijsman