vbscript permission-denied copyfile

vbscript - Permiso denegado en CopyFile en VBS



permission-denied (6)

Estoy tratando de automatizar la inserción de un archivo en los directorios personales de mis usuarios, pero tengo un error de "Permiso denegado": aparece en la línea 6 aquí, con la llamada CopyFile.

Hay otras partes de la secuencia de comandos (no mostradas) que crean y copian el contenido de las carpetas utilizando los mismos directorios de origen y destino, y funcionan perfectamente. Es solo cuando uso CopyFile que falla.

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: es un directorio de inicio de red, en el que el usuario actual tiene privilegios completos de lectura / escritura.

He intentado agregar / eliminar barras al final de las rutas, agregar "options.txt" a la ruta de destino, eliminar el argumento false ... No estoy seguro de qué otra cosa intentar. ¿Alguna idea?

¡Gracias!

Para su información, esta porción de código, que viene inmediatamente antes del bit propenso a errores arriba, se ejecuta perfectamente cada vez que:

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


Basado en su variable de origen ( sourcePath = "C:/Minecraft/bin/" ) sospecho que su código está apuntando al lugar equivocado

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

debiera ser

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

o

fso.CopyFile sourcePath & "options.txt", destinationPath


He leído tu problema, y ​​tuve el mismo problema. Pero después de que cambié un poco, mi problema "Permiso denegado" está resuelto.

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)

Mire ffgg = "C:/Users/Backups/user/" & User & "1/data/" , Antes de cambiarlo era ffgg = "C:/Users/Backups/user/" & User & "1/data" Cuando agrego una barra invertida después de "/data/" , mi problema está resuelto. Intenta volver a añadir barra. Tal vez resuelto tu problema. Buena suerte.


Otra cosa para verificar es si alguna aplicación aún tiene una retención en el archivo.

Tuvo algunos problemas con MoveFile. Parte de mi problema de permisos fue que mi script abre el archivo (en este caso en Excel), realiza una modificación, lo cierra y luego lo mueve a una carpeta "procesada".

Al depurar un par de cosas, el script se bloqueó varias veces. Al investigar el error de denegación de permiso, descubrí que tenía 4 instancias de Excel ejecutándose en segundo plano porque el script nunca pudo terminar correctamente la aplicación debido a dichos bloqueos. Al parecer, uno de ellos todavía tenía una retención en el archivo y, por lo tanto, "permiso denegado".


Para mí, solo 7-9 de 10 llamadas MoveFolder fueron exitosas. Además, cada vez que vuelvo a ejecutar la prueba sería una carpeta diferente que falló.

Tuve barras diagonales en mis caminos, así que no fue mi problema.

Había cerrado todos los archivos abiertos de Excel en la carpeta, por lo que no era mi problema.

Entonces traté de solucionar mi problema colocando DoEvents y Application.Wait (DateAdd ("S", 1 #, ahora)) entre el WorkBook.Close y las llamadas FSO.MoveFolder.

Esto hizo las cosas mejor, pero todavía no es perfecto.

Lo que hice para solucionar esto fue colocar la llamada a la carpeta de movimiento en un bucle hasta que funcionara. Que suele ser en la primera y, a veces, en la segunda llamada. ¡No lo he visto fallar en los diez intentos de mi ciclo de movimiento de fuerza!

¡En el mundo de las funciones asíncronas ocultas, tienes que dar un poco de tiempo para que el cierre realmente haya ocurrido en todos los niveles!


Solo he visto fallar CopyFile con un error de "permiso denegado" en uno de estos 3 escenarios:

  • Un problema de permiso real con el origen o el destino.
  • La ruta de destino es una carpeta, pero no tiene una barra invertida al final.
  • El archivo fuente está bloqueado por una aplicación.

para mí agregar / trabajado al final de la ubicación de la carpeta. Por lo tanto, si está copiando en una carpeta, no olvide poner /