Метод CopyHere - PullRequest
       16

Метод CopyHere

0 голосов
/ 06 июня 2019

Я использую:

$source = "C:\path1"
$destination = "C:\path2"

$FOF_CREATEPROGRESSDLG = "&H0&"
$objShell = New-Object -ComObject "Shell.Application"
$objFolder = $objShell.NameSpace($destination)
$objFolder.CopyHere($source, $FOF_CREATEPROGRESSDLG)

Это действительно хорошо, так как он копирует файлы с собственным диалоговым окном Windows для прогресса.Однако, если файлы существуют, он запрашивает подтверждение.

Как мне перезаписать все файлы?

Читая это, кажется, флаг "16" для да всем?

Не уверен, как интегрировать его, я пытаюсь:

$objFolder.CopyHere($source, "16")

, ноэто не работаетhttps://docs.microsoft.com/en-us/windows/desktop/shell/folder-copyhere

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Кавычки заставляют PowerShell автоматически вводить их содержимое в виде строки. Просто используйте числа в этом диалоге, и он должен работать правильно.

Это связано с тем, что метод shell.application.CopyHere () использует битовую маску для определения параметров. Программно более эффективно сравнивать двоичные регистры друг с другом.

Try $objFolder.CopyHere( $source, 16 )

0 голосов
/ 07 июня 2019

Завершено выполнение перезаписи из некоторого кода, который я нашел, вот окончательная рабочая версия, отображается индикатор выполнения, но без остановки остановки копирования, если файлы уже существуют:

$source = "C:\path1"
$destination = "C:\path2"

$SourceNameSpace = (new-object -com shell.application).NameSpace($source)
$destinationFolder = (new-object -com shell.application).NameSpace($destination)
$destinationFolder.CopyHere($source,16)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...