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