2013-04-17 5 views
19

में कॉपीफाइल पर अनुमति अस्वीकार कर दी गई है, मैं अपने उपयोगकर्ताओं की होम निर्देशिकाओं में एक फ़ाइल को दबाकर स्वचालित करने की कोशिश कर रहा हूं, लेकिन "अनुमति अस्वीकृत" त्रुटि पर फंस गया हूं - CopyFile कॉल के साथ यहां 6 पंक्ति पर फेंक दिया गया है।वीबीएस

स्क्रिप्ट के अन्य भाग (दिखाए गए नहीं) हैं जो समान स्रोत और गंतव्य निर्देशिकाओं का उपयोग करके फ़ोल्डर सामग्री बनाते हैं और कॉपी करते हैं, और वे पूरी तरह से काम करते हैं। यह केवल तब होता है जब मैं CopyFile का उपयोग करता हूं जो विफल रहता है।

dim fso 

set fso = CreateObject("Scripting.FileSystemObject") 

if not fso.FileExists("H:\Minecraft\.minecraft\options.txt") then 
     fso.CopyFile "C:\Minecraft\options.txt", "H:\Minecraft\.minecraft\" 
end if 

set fso = nothing 

H: एक नेटवर्क होम निर्देशिका, वर्तमान उपयोगकर्ता पूर्ण पढ़ने/privs बारे में है जो करने के लिए है।

मैं जोड़ने की कोशिश की है/हटाने के पीछे पथ से स्लैश गंतव्य पथ के लिए "options.txt" जोड़ने, false तर्क ... सुनिश्चित नहीं हैं और क्या करने की कोशिश करना हटाने के। कोई विचार?

धन्यवाद!

if not fso.FolderExists("H:\Minecraft\.minecraft\bin\") then 
    if not fso.FolderExists("H:\Minecraft\.minecraft\") then 
     fso.CreateFolder("H:\Minecraft\.minecraft\") 
    end if 
    fso.GetFolder("C:\Minecraft\bin\").Copy "H:\Minecraft\.minecraft\" 
end if 

उत्तर

60

मैं केवल CopyFile देखा है इन 3 परिदृश्यों में से एक में एक अनुमति नहीं दी त्रुटि के साथ विफल:

  • या तो स्रोत या गंतव्य के साथ एक वास्तविक अनुमति समस्या।
  • गंतव्य पथ एक फ़ोल्डर है, लेकिन पीछे पीछे बैकस्लैश नहीं है।
  • स्रोत फ़ाइल किसी एप्लिकेशन द्वारा लॉक की गई है।
+0

तो यह निश्चित रूप से # 2 नहीं है, शायद यह # 3 नहीं है ... गंतव्य पर अनुमतियां ठीक हैं, क्योंकि मैं वहां अन्य चीजों की प्रतिलिपि बना सकता हूं। मैं स्रोत पर अनुमतियों को कैसे चेक/ठीक करूं? (यानी, फ़ाइल प्रतिलिपि की अनुमति देने के लिए उन्हें क्या करने की आवश्यकता है? बस पढ़ें, है ना? यह पहले से ही है ...) – Triz

+0

टेक्स्ट फ़ाइल को नियुक्त किया, इसे फिर से बनाया, और अब स्क्रिप्ट काम करता है। तो उस पर कुछ फंकी अनुमतियां होनी चाहिए जिन्हें मैं नहीं देख सका। इसे कम करने में मदद करने के लिए धन्यवाद! – Triz

+17

"गंतव्य पथ एक फ़ोल्डर है, लेकिन पीछे पीछे बैकस्लैश नहीं है।" धन्यवाद! –

0

अपने स्रोत चर (sourcePath = "C:\Minecraft\bin\") के आधार पर मुझे लगता है अपनी हार्ड कोड की ओर इंगित करता है:

FYI करें, कोड के इस टुकड़ा है, जो ऊपर त्रुटि प्रवण बिट से ठीक पहले आता है, पूरी तरह से हर बार निष्पादित करता है गलत जगह

fso.CopyFile "C:\Minecraft\options.txt", destinationPath, false 

होना चाहिए

fso.CopyFile "C:\Minecraft\bin\options.txt", destinationPath 

या

fso.CopyFile sourcePath & "options.txt", destinationPath 
+0

आह, क्षमा करें, यह एक अच्छी पकड़ है, लेकिन यह वास्तव में गलत नहीं है। मैं स्क्रिप्ट के एक अलग हिस्से के लिए उस \ bin पथ का उपयोग कर रहा हूँ; options.txt फ़ाइल वास्तव में C: \ Minecraft \ options.txt पर स्थित है। – Triz

+0

(प्रासंगिक भागों को अधिक स्पष्ट रूप से प्रतिबिंबित करने के लिए प्रश्न संपादित किया है।) – Triz

+0

एक गलत स्रोत पथ 'फ़ाइल नहीं मिली' त्रुटि उत्पन्न करेगा। –

2

मेरे लिए / फ़ोल्डर के स्थान के अंत में काम किया। इसलिए, यदि आप फ़ोल्डर में प्रतिलिपि बना रहे हैं, तो /

0

मैंने आपकी समस्या को पढ़ लिया है, और मुझे एक ही समस्या है। लेकिन फिर से मैंने कुछ बदल दिया, मेरी समस्या "अनुमति अस्वीकार" हल हो गया है।

Private Sub Addi_Click() 
'On Error Resume Next 
'call ds 
browsers ("false") 
Call makeAdir 
ffgg = "C:\Users\Backups\user\" & User & "1\data\" 
Set fs = CreateObject("Scripting.FileSystemObject") 
    Set f = fs.Getfolder("c:\users\Backups\user\" & User & "1\data") 
    f.Attributes = 0 
Set fso = VBA.CreateObject("Scripting.FileSystemObject") 
Call fso.Copyfile(filetarget, ffgg, True) 

ffgg = "C:\Users\Backups\user\" & User & "1\data\" पर देखो, इससे पहले कि मैं बदल गया यह ffgg = "C:\Users\Backups\user\" & User & "1\data" था जब मैं "\data\" के बाद बैकस्लैश जोड़ने के लिए, मेरी समस्या हल कर रहा है। वापस स्लैश जोड़ने की कोशिश करें। शायद आपकी समस्या हल हो गई। सौभाग्य।

1

जांच करने की एक और बात यह है कि यदि किसी भी एप्लिकेशन को अभी भी फ़ाइल पर रोक है।

MoveFile के साथ कुछ समस्याएं थीं। मेरी अनुमति समस्या का एक हिस्सा यह था कि मेरी स्क्रिप्ट फ़ाइल खोलती है (इस मामले में एक्सेल में), एक संशोधन करता है, इसे बंद करता है, फिर इसे "संसाधित" फ़ोल्डर में ले जाता है।

कुछ चीजों को डीबग करने में, स्क्रिप्ट कुछ बार दुर्घटनाग्रस्त हो गई। अनुमति में खोने से इनकार कर दिया गया त्रुटि मैंने पाया कि मेरे पास पृष्ठभूमि में एक्सेल के 4 उदाहरण चल रहे थे क्योंकि स्क्रिप्ट कभी भी दुर्घटनाओं के कारण एप्लिकेशन को ठीक से समाप्त नहीं कर पाई थी। जाहिर है उनमें से एक अभी भी फाइल पर पकड़ था और, इस प्रकार, "अनुमति अस्वीकार कर दी गई।"

संबंधित मुद्दे