VBS中的CopyFile上的权限被拒绝

时间:2013-04-17 22:56:48

标签: vbscript permission-denied file-copying

我正在尝试自动将文件推送到用户的主目录中,但是我遇到了“权限被拒绝”错误 - 这里会在第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

8 个答案:

答案 0 :(得分:83)

在以下三种情况之一中,我只看到CopyFile因“权限被拒”错误而失败:

  • 源或目标的实际权限问题。
  • 目标路径是一个文件夹,但没有尾部反斜杠。
  • 源文件被应用程序锁定。

答案 1 :(得分:3)

为我添加/在文件夹位置的末尾工作。  因此,如果您要复制到文件夹中,请不要忘记放置/

答案 2 :(得分:1)

要检查的另一件事是,是否有任何应用程序仍然保留文件。

MoveFile存在一些问题。我的权限问题的一部分是我的脚本打开文件(在这种情况下在Excel中),进行修改,关闭它,然后将其移动到"处理"文件夹中。

在调试一些事情时,脚本崩溃了几次。深入了解权限被拒绝错误我发现我在后台运行了4个Excel实例,因为脚本由于崩溃而无法正确终止应用程序。显然他们中的一个仍然保留了文件,因此,#34;许可被拒绝。"

答案 3 :(得分:0)

基于您的源变量(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

答案 4 :(得分: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\"之后添加反斜杠时,我的问题就解决了。尝试添加反斜杠。也许解决了你的问题。祝你好运。

答案 5 :(得分:0)

您可以这样做:

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

将文件名包含在要复制到的文件夹中。

答案 6 :(得分:0)

值得检查任务管理器中是否有任何滞留的wscript.exe任务。 可能是阻止该文件访问的原因之一。

答案 7 :(得分:0)

您的防病毒软件可能会阻止脚本的活动。我在 AVG Antivirus 以静默模式运行时遇到了这个问题(这意味着它不会提醒您它采取的每个保护步骤,因此您会收到权限错误而没有意识到 AVG 正在阻止该操作)。 就我而言,我调用了详细模式(关闭了静默模式),执行了脚本,AVG 提出了一个拦截警告,允许我训练 AVG 以允许该脚本运行。