Permission refusée sur CopyFile dans VBS

j'essaie d'automatiser la poussée d'un fichier dans les répertoires de mes utilisateurs, mais je suis bloqué sur une erreur "Permission refusée" - est jeté sur la ligne 6 ici, avec l'appel de CopyFile.

il y a d'autres parties du script (Non affichées) qui créent et copient le contenu du dossier en utilisant les mêmes répertoires source et destination, et elles fonctionnent parfaitement. Ce N'est que lorsque J'utilise CopyFile qu'il échoue.

dim fso

set fso = CreateObject("Scripting.FileSystemObject")

if not fso.FileExists("H:Minecraft.minecraftoptions.txt") then
        fso.CopyFile "C:Minecraftoptions.txt", "H:Minecraft.minecraft"
end if

set fso = nothing

H: est un répertoire d'accueil du réseau, vers lequel l'utilisateur courant a complet en lecture/écriture privs.

j'ai essayé d'Ajouter/Supprimer les slashs de fuite des chemins, ajouter "options.txt" vers le chemin de destination, en supprimant le false argument... Pas sûr de ce que d'autre à essayer. Toutes les pensées?

Merci!

FYI, ce morceau de code, qui vient immédiatement avant le bit sujet aux erreurs ci-dessus, s'exécute parfaitement à chaque fois:

if not fso.FolderExists("H:Minecraft.minecraftbin") then
    if not fso.FolderExists("H:Minecraft.minecraft") then
        fso.CreateFolder("H:Minecraft.minecraft")
    end if
    fso.GetFolder("C:Minecraftbin").Copy "H:Minecraft.minecraft"
end if
21
demandé sur Triz 2013-04-18 02:56:47

5 réponses

je n'ai jamais vu CopyFile échec avec une erreur "permission refusée" dans l'un de ces 3 scénarios:

  • un problème réel de permission avec la source ou la destination.
  • le chemin de Destination est un dossier, mais n'a pas de barre oblique inversée.
  • le fichier Source est verrouillé par une application.
70
répondu Ansgar Wiechers 2018-04-12 08:05:02

pour moi, l'ajout de / travaillé à la fin de l'emplacement de dossier. Donc, si vous copiez dans le dossier, n'oubliez pas de mettre /

2
répondu Surabhi Sugandha 2016-01-12 09:50:02

une autre chose à vérifier est si des applications ont encore une attente sur le fichier.

avait quelques problèmes avec MoveFile. Une partie de mon problème de permissions est que mon script ouvre le fichier (dans ce cas en Excel), fait une modification, le ferme, puis le déplace dans un dossier "processed".

dans le débogage de certaines choses, le script s'est écrasé plusieurs fois. En fouillant dans l'erreur de permission refusée j'ai trouvé que j'avais 4 cas D'Excel tournant en arrière-plan parce que le script n'a jamais été capable de terminer correctement l'application à cause de ces accidents. Apparemment, l'un d'entre eux avait encore une emprise sur le dossier et, par conséquent, "permission refusée."

1
répondu CargoPantsMan 2016-06-23 16:00:21

basé sur votre variable source (sourcePath = "C:\Minecraft\bin\") je soupçonne votre code dur de pointer au mauvais endroit

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

doit être

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

ou

fso.CopyFile sourcePath & "options.txt", destinationPath
0
répondu Dave 2013-04-18 08:39:18

j'ai lu votre problème, Et j'ai eu le même problème. Mais après que j'en ai changé, mon problème "Permission refusée" est résolu.

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)

Regardez ffgg = "C:\Users\Backups\user\" & User & "1\data\", avant que je change c'était ffgg = "C:\Users\Backups\user\" & User & "1\data" quand j'ajoute backslash après "\data\", mon problème est résolu. Essayez de rajouter du slash. Peut-être résoudre votre problème. Bonne chance.

0
répondu HzzKyGcs 2016-04-13 15:16:19