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
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.
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 /
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."
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
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.