簡體   English   中英

VBS 中的 CopyFile 權限被拒絕

[英]Permission denied on CopyFile in VBS

我正在嘗試自動將文件推送到我的用戶的主目錄中,但我遇到了“權限被拒絕”錯誤 - 在這里的第 6 行,通過 CopyFile 調用拋出。

腳本的其他部分(未顯示)使用相同的源目錄和目標目錄創建和復制文件夾內容,它們工作得很好。 只有當我使用 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:是網絡主目錄,當前用戶對其具有完全的讀/寫權限。

我試過從路徑中添加/刪除尾部斜杠,將"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

在以下 3 種情況之一中,我只見過CopyFile因“權限被拒絕”錯誤而失敗:

  • 源或目標的實際權限問題。
  • 目標路徑是一個文件夾,但沒有尾部反斜杠。
  • 源文件被應用程序鎖定。

對我來說,在文件夾位置的末尾添加/工作。 因此,如果您要復制到文件夾中,請不要忘記將/

要檢查的另一件事是是否有任何應用程序仍保留該文件。

MoveFile 有一些問題。 我的權限問題的一部分是我的腳本打開文件(在這種情況下在 Excel 中),進行修改,關閉它,然后將其移動到“已處理”文件夾。

在調試一些事情時,腳本崩潰了幾次。 深入研究權限被拒絕錯誤,我發現我有 4 個 Excel 實例在后台運行,因為由於上述崩潰,腳本永遠無法正確終止應用程序。 顯然,其中一個人仍然持有該文件,因此“權限被拒絕”。

根據您的源變量( sourcePath = "C:\\Minecraft\\bin\\" ),我懷疑您的硬代碼指向錯誤的位置

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

應該

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

要么

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

我已閱讀您的問題,我遇到了同樣的問題。 但是在我更改了一些之后,我的“權限被拒絕”問題就解決了。

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\\"之后添加反斜杠時,我的問題就解決了。 嘗試添加反斜杠。 也許解決了你的問題。 祝你好運。

你可以這樣做:

fso.CopyFile "C:\Minecraft\options.txt", "H:\Minecraft\.minecraft\options.txt"

在您復制到的文件夾中包含文件名。

值得檢查任務管理器是否有任何卡住的流浪 wscript.exe 任務。 它可能是阻止訪問文件的那些之一。

您的防病毒軟件可能會阻止腳本的活動。 我在 AVG Antivirus 以靜默模式運行時遇到了這個問題(這意味着它不會提醒您它采取的每個保護步驟,因此您會收到權限錯誤而沒有意識到 AVG 正在阻止該操作)。 就我而言,我調用了詳細模式(關閉了靜默模式),執行了腳本,AVG 提出了一個攔截警告,允許我訓練 AVG 以允許該腳本運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM