2013-04-17 41 views
19

Tôi đang cố gắng tự động đẩy tệp vào thư mục nhà của người dùng của tôi, nhưng bị kẹt trên lỗi "Bị từ chối" - được ném trên dòng 6 tại đây, với lệnh gọi CopyFile.Quyền bị từ chối trên CopyFile trong VBS

Có các phần khác của tập lệnh (không được hiển thị) tạo và sao chép nội dung thư mục bằng cùng thư mục nguồn và đích, và chúng hoạt động hoàn hảo. Chỉ khi tôi sử dụng CopyFile thì nó không thành công.

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: là thư mục chính mạng, mà người dùng hiện tại có toàn quyền đọc/ghi.

Tôi đã thử thêm/xóa dấu gạch chéo ở cuối đường dẫn, thêm "options.txt" vào đường dẫn đích, xóa đối số false ... Không chắc chắn nên thử gì khác. Có suy nghĩ gì không?

Cảm ơn!

FYI, đoạn mã này, mà xuất phát ngay trước chút dễ bị lỗi trên, thực hiện một cách hoàn hảo mỗi lần:

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 

Trả lời

60

Tôi đã chỉ nhìn thấy CopyFile thất bại với một lỗi từ chối cho phép tại một trong những 3 kịch bản:

  • Một vấn đề cho phép thực tế với một trong hai nguồn hoặc đích.
  • Đường dẫn đích là một thư mục nhưng không có dấu gạch chéo ngược.
  • Tệp nguồn bị khóa bởi một ứng dụng.
+0

Vì vậy, nó chắc chắn không phải # 2, nó có thể không # 3 ... Quyền truy cập vào điểm đến là tốt, vì tôi có thể sao chép những thứ khác ở đó. Làm cách nào để kiểm tra/sửa các quyền trên nguồn? (Đó là, họ cần phải làm gì để cho phép sao chép tập tin? Chỉ cần đọc, phải không? Nó đã có ...) – Triz

+0

Bỏ qua tệp văn bản, tạo lại nó, và bây giờ kịch bản hoạt động. Vì vậy, chắc hẳn đã có một số điều khoản sôi nổi trên đó mà tôi không thể nhìn thấy. Cảm ơn bạn đã giúp thu hẹp nó xuống! – Triz

+17

"Đường dẫn đích là một thư mục nhưng không có dấu gạch chéo ngược." Cảm ơn! –

0

Dựa trên biến nguồn của bạn (sourcePath = "C:\Minecraft\bin\") Tôi nghi ngờ cứng mã của bạn được chỉ vào sai chỗ

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

nên

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

hoặc

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

Ahh, xin lỗi, đó là một điều tốt, nhưng nó không thực sự không chính xác. Tôi đang sử dụng đường dẫn \ bin đó cho một phần khác của tập lệnh; tệp options.txt thực sự được đặt tại C: \ Minecraft \ options.txt. – Triz

+0

(Đã chỉnh sửa câu hỏi để phản ánh các phần liên quan rõ ràng hơn.) – Triz

+0

Đường dẫn nguồn sai sẽ tạo ra lỗi 'Không tìm thấy tệp '. –

2

để tôi thêm / hoạt động ở cuối thư mục. Do đó, nếu bạn đang sao chép vào thư mục, đừng quên đặt /

0

Tôi đã đọc vấn đề của bạn, Và tôi đã có cùng một vấn đề. Nhưng af ter tôi đã thay đổi một số, vấn đề của tôi "Permission Denied" được giải quyết.

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) 

Nhìn vào ffgg = "C:\Users\Backups\user\" & User & "1\data\", Trước khi tôi thay đổi nó là ffgg = "C:\Users\Backups\user\" & User & "1\data" Khi tôi thêm xuyệc ngược sau "\data\", vấn đề của tôi được giải quyết. Hãy thử thêm dấu gạch chéo ngược. Có thể giải quyết vấn đề của bạn. Chúc may mắn.

1

Một điều cần kiểm tra là nếu bất kỳ ứng dụng nào vẫn có một lưu giữ trên tệp.

Đã xảy ra sự cố với MoveFile. Một phần của vấn đề quyền hạn của tôi là kịch bản của tôi sẽ mở tệp (trong trường hợp này trong Excel), thực hiện một sửa đổi, đóng nó, sau đó chuyển nó vào thư mục "đã xử lý".

Khi gỡ lỗi một vài thứ, tập lệnh đã bị lỗi vài lần. Đào vào sự cho phép bị từ chối lỗi Tôi thấy rằng tôi đã có 4 trường hợp của Excel chạy trong nền vì kịch bản đã không bao giờ có thể chấm dứt đúng các ứng dụng do tai nạn nói. Rõ ràng một trong số họ vẫn còn giữ một tập tin và, do đó, "sự cho phép bị từ chối."

Các vấn đề liên quan