Windows कमांड प्रॉम्प्ट - स्थानांतरित उपयोगकर्ता के दस्तावेज़ फ़ोल्डर प्राप्त करें


8

मैं एक साधारण बैच स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो %userprofile%\Documentsनिर्देशिका से कुछ फ़ाइलों को कॉपी करता है । मैं अपनी मशीन पर स्क्रिप्ट का परीक्षण कर रहा हूं, लेकिन कुछ विफलताओं के बाद मुझे एहसास हुआ कि मैंने अपने उपयोगकर्ता के डेटा को एक अलग विभाजन में स्थानांतरित कर दिया है । इसलिए, %userprofile%\Documentsहै खाली , और (जाहिर है) कुछ भी नहीं की नकल की है।

मैंने पहले से ही इस तरह के %homedrive%और अन्य पर्यावरण चर की कोशिश की %homepath%, लेकिन वे अभी भी मानक पर इंगित करते हैंC:\...

क्या उपयोगकर्ता के डेटा के लिए उपयोग की जाने वाली वास्तविक ड्राइव का पता लगाने का कोई तरीका है ?

मैं विंडोज 10 का उपयोग कर रहा हूं।

धन्यवाद!

संपादित करें

जैसा कि ʜcʜιᴇ007 द्वारा बताया गया है, मैंने उपयोगकर्ता के डेटा को किसी अन्य विभाजन में स्थानांतरित नहीं किया है, लेकिन मैंने "विभाजन" फ़ोल्डर (दस्तावेज़, वीडियो, ...) को किसी अन्य विभाजन पर कुछ संबंधित फ़ोल्डरों में स्थानांतरित किया है: राइट-क्लिक करें (जैसे ) दस्तावेज़, गुण, पथ।

मैं एक दस्तावेज़ फ़ोल्डर का रास्ता कैसे खोज सकता हूं जिसे इस तरह से स्थानांतरित किया गया है?


2
% userprofile% के पास सही फ़ोल्डर होना चाहिए, भले ही आप उसे कहाँ रखें, जब तक कि आपने प्रोफ़ाइल फ़ोल्डर को सही ढंग से स्थानांतरित नहीं किया है, तब तक यह सही होना चाहिए। तो आपने वास्तव में इसे दूसरे विभाजन में कैसे स्थानांतरित किया?
Ƭᴇc atιᴇ007

ठीक है, मुझे ईमानदारी से याद नहीं था, इसलिए मैं थोड़ा पीछे हट गया और आखिरकार मुझे पता चला कि मैंने क्या किया है। मैंने "मुख्य" फ़ोल्डर (दस्तावेज़, वीडियो, आदि ..) पर राइट-क्लिक किया, चयनित गुण, पथ टैब का चयन किया और पथ को बदल दिया। (मैं विंडोज के इतालवी संस्करण का उपयोग कर रहा हूं, और जैसा कि मैं मुश्किल से उन नामों का अनुवाद कर रहा हूं जिन्हें मैं अपनी स्क्रीन पर देखता हूं, कुछ शब्द अलग हो सकते हैं)। तो आप सही थे,% userprofile% acutally कुछ भी गलत नहीं कर रहा है। लेकिन सवाल अभी भी है: मैं "मुख्य" दस्तावेज़ फ़ोल्डर का वास्तविक पथ कैसे पा सकता हूं?
एलेसेंड्रो

फिर मुझे लगता है कि आप अपने उपयोगकर्ता प्रोफ़ाइल पथ में दस्तावेज़ फ़ोल्डर के साथ अपने दस्तावेज़ "पुस्तकालय" को भ्रमित कर रहे हैं। दो अलग बातें ...
ᴇcᴇι 6007

क्या दस्तावेज़ फ़ोल्डर का रास्ता खोजने का कोई तरीका है, यह देखते हुए कि इसे इस तरह से स्थानांतरित किया गया है?
एलेसैंड्रो

जवाबों:


5

दुर्भाग्य से, एक साधारण वातावरण चर नहीं है जिसे आप अपनी स्क्रिप्ट के सापेक्ष डिफ़ॉल्ट पथ से अनुप्रेषित करने पर बैच स्क्रिप्ट से जांच सकते हैं। आप पर्यावरण चर की पूरी सूची देख सकते हैं (कुछ अवांछित सहित):

http://ss64.com/nt/syntax-variables.html

एक और बात का ध्यान रखें कि फ़ोल्डर पुनर्निर्देशन आपको एक नेटवर्क शेयर पर भी ले जाने की अनुमति देता है। वहाँ एक "ड्राइव" आप सभी का उपयोग कर सकते हैं नहीं है; यह सिर्फ एक यूएनसी मार्ग हो सकता है।

अच्छी खबर यह है कि आप जो जानकारी चाहते हैं वह रजिस्ट्री में निम्न स्थान पर उपलब्ध है:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ उपयोगकर्ता शैल फ़ोल्डर \ व्यक्तिगत

फ़ोल्डरों का एक पूरा सेट है जो आप उस User Shell Foldersकुंजी में घूम सकते हैं , लेकिन मेरा दस्तावेज़ फ़ोल्डर पढ़ने के लिए यहां विंडोज बैच का उपयोग इस तरह दिखता है:

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal

मेरी मशीन पर यह निम्न आउटपुट का उत्पादन करता है, जो आपके लिए आवश्यक या कम उपयोगी हो सकता है, जो इस बात पर निर्भर करता है कि आपको क्या जरूरत है और आप विंडोज बैच स्क्रिप्ट के साथ कितने अच्छे हैं:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ उपयोगकर्ता शेल फ़ोल्डर
    व्यक्तिगत REG_EXPAND_SZ C: \ Users \ joel \ Documents

आप vbscript भी आज़मा सकते हैं:

Set wshshell = CreateObject("WScript.Shell")
Documents = wshShell.SpecialFolders("MyDocuments")

या शक्तियों:

[Environment]::GetFolderPath('MyDocuments')

यह अंततः विंडोज पर बैश के माध्यम से उपलब्ध हो सकता है, भी (वास्तव में!), लेकिन मैंने यह नहीं देखा है कि इसे अभी तक कैसे करना है जो लगातार सटीक होगा।


3

मान लें कि आपके पास वर्तमान फ़ोल्डर या कंप्यूटर पर कुछ ज्ञात-अतिरिक्त स्थान तक पहुंच है ... आप PowerShell का उपयोग कर सकते हैं!

Environment.GetFolderPathसमारोह की फ़ाइल सिस्टम पथ प्राप्त कर सकते हैं अच्छी तरह से ज्ञात स्थानों दस्तावेज़ फ़ोल्डर भी शामिल है। यह PowerShell कमांड दस्तावेज़ पथ प्रिंट करता है:

[Environment]::GetFolderPath('MyDocuments')

इसे Out-Filecmdlet वाली फ़ाइल में लिखा जा सकता है । पुनर्निर्देशन ऑपरेटर >वास्तव में यहां काम नहीं करता है क्योंकि यह एक बीओएम के साथ एक यूनिकोड पाठ फ़ाइल का उत्पादन करता है, जो बैच प्रोसेसर के साथ काम करना मुश्किल है।

[Environment]::GetFolderPath('MyDocuments') | Out-File 'docspath.tmp' -Encoding ascii

उस फ़ाइल को एक बैच चर के साथ पढ़ा जा सकता है set /p। यह सब एक साथ रखते हुए, हम इस बैच स्क्रिप्ट टुकड़ा मिलता है:

powershell -Command "[Environment]::GetFolderPath('MyDocuments') | Out-File 'docspath.tmp' -Encoding ascii"
set /p DOCSPATH=< docspath.tmp
del docspath.tmp

उपयोगकर्ता के दस्तावेज़ फ़ोल्डर का पथ अब के रूप में व्यक्त किया जा सकता है %DOCSPATH%


1

मेरे पास विश्वसनीय उत्तर है। दोशों का उत्तर देने वाली शक्तियों का संयोजन

for /f "delims=" %%a in ('powershell.exe -command "& {write-host $([Environment]::GetFolderPath('MyDocuments'))}"') do Set "$Value=%%a"
Echo Value received from Powershell : %$Value%

मुझे नहीं पता था कि आप $एक सीएमडी चर नाम में उपयोग कर सकते हैं । लेकिन आप जानते हैं कि यह एक असामान्य उपयोग है, है ना?
स्कॉट

0

वैसे यह बहुत आसान है :)

डेस्कटॉप फ़ोल्डर का स्थान यहां सूचीबद्ध है:

\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell फ़ोल्डर

या PowerShell में भी सरल है

$ DesktopPath = [पर्यावरण] :: GetFolderPath ("डेस्कटॉप")

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.