Vbscript 对VBS中的CopyFile的权限被拒绝

Vbscript 对VBS中的CopyFile的权限被拒绝,vbscript,permission-denied,file-copying,Vbscript,Permission Denied,File Copying,我正在尝试自动将文件推送到用户的主目录,但遇到了一个“权限被拒绝”错误,在这里的第6行,通过CopyFile调用抛出了这个错误 脚本的其他部分(未显示)使用相同的源目录和目标目录创建和复制文件夹内容,它们工作正常。只有当我使用CopyFile时,它才会失败 Dim fso Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FileExists("H:\Minecraft\.minecraft\options.txt

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

根据您的源变量(
sourcePath=“C:\Minecraft\bin\”
),我怀疑您的硬代码指向了错误的位置

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

fso.CopyFile "C:\Minecraft\bin\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\”
之后添加反斜杠时,我的问题就解决了。尝试添加反斜杠。也许解决了你的问题。祝你好运。

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

MoveFile有一些问题。我的权限问题的一部分是,我的脚本打开文件(在本例中为Excel),进行修改,关闭文件,然后将其移动到“已处理”文件夹

在调试一些东西时,脚本崩溃了几次。深入研究permission denied错误,我发现我有4个Excel实例在后台运行,因为由于上述崩溃,脚本无法正确终止应用程序。显然,其中一人仍然持有该文件,因此“权限被拒绝。”

您可以这样做:

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

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

值得检查任务管理器中是否有任何被卡住的wscript.exe杂散任务。
它可能是那些阻止访问该文件的人之一。

啊,对不起,这是一个很好的发现,但实际上它并不是不正确的。我正在为脚本的不同部分使用该\bin路径;options.txt文件确实位于C:\Minecraft\options.txt(已编辑该问题以更清楚地反映相关部分)。错误的源路径将产生
文件未找到
错误。因此它肯定不是#2,可能不是#3。。。在目标上的权限很好,因为我可以在那里复制其他内容。如何检查/修复源的权限?(也就是说,它们需要什么才能允许文件复制?只是读取,对吗?它已经…)对文本文件进行了核处理,重新创建了它,现在脚本可以工作了。所以一定有一些我看不到的奇怪的权限。谢谢你帮我缩小范围!“目标路径是文件夹,但没有尾随的反斜杠。”谢谢!对我来说,这也是第2项。@user2366975应该是Erik Lippert。不过,这种行为实际上是。
fso.CopyFile "C:\Minecraft\options.txt", "H:\Minecraft\.minecraft\options.txt"