Отказано в разрешении на CopyFile в VBS

Я пытаюсь автоматизировать нажатие файла в домашние каталоги моих пользователей, но застрял на ошибке "отказано в разрешении" - бросается на строку 6 здесь, с вызовом CopyFile.

есть другие части скрипта (не показаны), которые создают и копируют содержимое папки, используя те же исходные и целевые каталоги, и они работают отлично. Только когда я использую CopyFile, он терпит неудачу.

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: - это сетевой домашний каталог, к которому текущий пользователь имеет полное чтение/запись privs.

Я попытался добавить / удалить конечные косые черты из путей, добавив "options.txt" к пути назначения, удаляя

5 ответов


Я только когда-либо видел CopyFile сбой с ошибкой" отказано в разрешении " в одном из этих 3 сценариев:

  • фактическая проблема разрешения с источником или назначением.
  • путь назначения-это папка, но не имеет обратной косой черты.
  • исходный файл заблокирован приложением.

для меня / работал в конце местоположения папки. Следовательно, если вы копируете в папку, не забудьте поставить /


еще одна вещь, чтобы проверить, если какие-либо приложения по-прежнему удерживают файл.

были некоторые проблемы с MoveFile. Часть моей проблемы с разрешениями заключалась в том, что мой скрипт открывает файл (в данном случае в Excel), вносит изменения, закрывает его, а затем перемещает в "обработанную" папку.

при отладке нескольких вещей сценарий несколько раз разбился. Копаясь в ошибке отказа в разрешении, я обнаружил, что у меня было 4 экземпляра Excel, работающих в фоновом режиме, потому что скрипт никогда не смог правильно завершить работу приложения из-за указанных сбоев. По-видимому, один из них все еще держал файл и, таким образом, "разрешение отказано."


на основе исходной переменной (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

Я прочитал вашу проблему, и у меня была такая же проблема. Но после того, как я изменил некоторые, моя проблема "отказано в разрешении" решена.

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\", моя проблема решена. Попробуйте добавить обратную косую черту. Может, решил твою проблему. Удача.