कैसे प्रोग्राम फ़ाइलों को प्राप्त करने के लिए x86 env चर?


108

मैं यह जानना चाहूंगा कि मैं कमांड प्रॉम्प्ट में प्रोग्राम फाइल्स (x86) के स्थान को कैसे प्रदर्शित कर सकता हूं। मेरे द्वारा विंडोज़ सात चौसठ बिट का उपयोग किया जा रहा है।

मैंने कोशिश की:

echo %programfiles(x86)%और echo %programfiles%,
जो दोनों ही प्रदर्शित करता हैC:\Program Files

जब मैं मैन्युअल रूप से रजिस्ट्री की जाँच की,
HKLM / सॉफ्टवेयर / माइक्रोसॉफ्ट / विंडोज़ / CurrentVersion , करने के लिए अंक और
programfilesdirC:\Program Files

HKLM / सॉफ्टवेयर / WOW64 / Microsoft / winodws / currentversion ,
को programfilesdirइंगित करता है C:\Program Files (x86)

लेकिन, मुझे हमेशा C: \ Program Files के साथ क्यों प्रदर्शित किया जा रहा है ??


10
मुझे लगता है कि असली सवाल यह है कि% programfiles% का एक संस्करण क्यों नहीं है जो हमेशा दोनों पर 7 और विंडोज़ xp पर x86 को इंगित करता है ताकि दोनों पर चलने वाले प्रोग्राम को सरल बनाया जा सके? उदाहरण के लिए, XP पर विंडोज (x86) के लिए डिबगिंग टूल स्थापित करने के बाद, यह प्रोग्राम फाइल्स में पाया जाता है, लेकिन विंडोज 7 पर यह प्रोग्राम फाइल्स (x86) पर पाया जाता है, जिसका अर्थ है कि कमांड फाइल बनाने का कोई सरल तरीका नहीं है जो सभी कंप्यूटरों में वितरित किया जा सके। चूंकि बिल्ट-इन पर्यावरण वेरिएबल्स में से कोई भी लगातार प्रोग्राम फ़ाइलों के लिए 32-बिट स्थान को इंगित नहीं करता है।
dj69

जवाबों:


178

64-बिट मोड में चलने वाली 64-बिट मशीन पर:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

32-बिट (WOW64) मोड में चलने वाली 64-बिट मशीन पर:

  • echo %programfiles% ==> C:\Program Files (x86)
  • echo %programfiles(x86)% ==> C:\Program Files (x86)

32-बिट मोड में चलने वाली 32-बिट मशीन पर:

  • echo %programfiles% ==> C:\Program Files
  • echo %programfiles(x86)% ==> %programfiles(x86)%

18
32-बिट मोड में 32-बिट मशीन पर कौन सा% प्रोग्रामफाइल (x86)% वापस आएगा?
इवान कोचूरिन

Windows XP (x86) पर काम नहीं करता है, आपको% programfiles% की जरूरत है। मुझे लगता है कि एकमात्र तरीका यह है कि पहले ओएस संस्करण को कोड द्वारा जांचा जाए और फिर एक चर या अन्य का उपयोग किया जाए।
gsubiran

3
यह उपरोक्त सूची में% ProgramW6432% जोड़ने के लायक हो सकता है।
एलेक्स विसे

2
विंडोज 7 के 32-बिट संस्करण के लिए भी यही लागू होता है - कोई%
प्रोग्रामफ़ाइल्स

1
I दूसरा @Alex Wiese,% ProgramW6432% में 64-बिट प्रोग्राम फाइल्स डायरेक्टरी होगी, हमेशा। % ProgramFiles (x86)% में हमेशा 32-बिट प्रोग्राम फाइल्स डायरेक्टरी होगी। वे दो चर स्थिर हैं ... बाकी 64-बिट ओएस (या कमांड प्रॉम्प्ट) किस मोड के आधार पर बदल सकते हैं।
जेसन

36

एक और प्रासंगिक पर्यावरण चर है:

% ProgramW6432%

तो, 32-बिट (WOW64) मोड में चलने वाली 64-बिट मशीन पर:

  • इको% प्रोग्रामफाइल्स% ==> C: \ Program Files (x86)
  • इको% प्रोग्रामफाइल्स (x86)% ==> C: \ Program Files (x86)
  • इको% ProgramW6432% ==> C: \ Program Files

से विकिपीडिया :

% ProgramFiles% चर प्रोग्राम फ़ाइल निर्देशिका को इंगित करता है, जो विंडोज और अन्य के सभी संस्थापित कार्यक्रमों को संग्रहीत करता है। अंग्रेजी-भाषा प्रणालियों पर डिफ़ॉल्ट "C: \ Program Files" है। विंडोज (XP, 2003, विस्टा) के 64-बिट संस्करणों में,% ProgramFiles (x86)% भी हैं, जो "C: \ Program Files (x86)", और% ProgramW6432% के लिए डिफ़ॉल्ट है, जो "C:" से चूक जाता है \कार्यक्रम फाइलें"। % ProgramFiles% स्वयं इस बात पर निर्भर करता है कि पर्यावरण चर का अनुरोध करने वाली प्रक्रिया स्वयं 32-बिट या 64-बिट है (यह विंडोज-ऑन-विंडोज 64-बिट पुनर्निर्देशन के कारण होता है)।

संदर्भ: http://en.wikipedia.org/wiki/Environment_variable


3
बेहतर संदर्भ: MSDN: WOW64 कार्यान्वयन विवरण - "ProgramW6432 और CommonProgramW6432 पर्यावरण चर विंडोज 7 और विंडोज सर्वर 2008 R2 के साथ शुरू किए गए थे।" विकिपीडिया सीधे इसका विरोध करता है; दिलचस्प रूप से, विकिपीडिया केवल उन तीन संस्करणों को सूचीबद्ध करता है जो MSDN के अनुसार इस चर का समर्थन नहीं करते हैं। दुर्भाग्य से मैं परीक्षण करने के लिए 64-बिट XP / Vista नहीं है।
लेक्सिको ऑक्ट

1
दूसरी बार पढ़ने पर, मैं देखता हूं कि विंडोज 7/2008 R2 आवश्यकता केवल 64-बिट प्रक्रियाओं पर लागू होती है। चर को केवल विस्टा x64 पर 32-बिट प्रक्रियाओं के लिए परिभाषित किया गया है।
लेक्सिको


0

IMHO, इस चर्चा में एक बिंदु जो गायब है वह यह है कि आप जो भी चर का उपयोग करते हैं, यह हमेशा उचित फ़ोल्डर में इंगित करने की गारंटी है। यह दुर्लभ मामलों में महत्वपूर्ण हो जाता है, जहां विंडोज को C: \ के अलावा किसी अन्य ड्राइव पर इंस्टॉल किया जाता है


यह एक अच्छा नोट है। लेकिन चूंकि यह सीधे सवाल का जवाब नहीं दे रहा है, इसलिए बेहतर होगा कि इसे प्रश्न के रूप में ही लिखें।
AbstractVoid
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.