Объект файловой системы: MoveFolder выдает случайные ошибки «Отказано в доступе» - PullRequest
2 голосов
/ 02 апреля 2019

Я использую объект файловой системы в Powershell, чтобы выполнить циклический просмотр папок: скажем, имея oldFolder, currentFolder и newFolder, это процесс:

  1. DeleteFolder oldFolder
  2. MoveFolder currentFolder в oldFolder
  3. Переместить новую папку в текущую папку

При выполнении в сценарии шаг 2 или 3 случайным образом выбрасывает CTL_E_PERMISSIONDENIED. Когда сценарий останавливается, я повторяю последнюю команду, и она заканчивается правильно.

Похоже, что метод MoveFolder работает полу асинхронно.

ps: в папках есть подпапки и много файлов

Я пытался добавить некоторую задержку, но я не счастлив, не зная, что происходит.

$oldFolder = "D:\test\folder_OLD"
$curFolder = "D:\test\folder"
$newFolder = "D:\test\folder_NEW"

$fso = $fso = New-Object -ComObject scripting.filesystemobject

if (Test-Path $oldFolder) {$fso.DeleteFolder($oldFolder)}

if (Test-Path $curFolder) {$fso.MoveFolder($curFolder,$oldFolder)}

$fso.MoveFolder($newFolder,$curFolder)

1 Ответ

0 голосов
/ 03 апреля 2019

Спасибо за быстрые ответы.Это подтверждает мое подозрение.

Я попытаюсь использовать другой метод, возможно, чистый PowerShell, как предложил Ли.

...