CopyHere方法

时间:2019-06-06 19:22:23

标签: powershell methods

我正在使用:

mydata <- "x"
vars <- c("col1", "col2")
get(mydata)[[vars[2]]]

这非常好,因为它使用本机Windows对话框复制文件以获取进度。但是,如果文件存在,则会提示您进行确认。

如何使其覆盖所有文件?

读到这篇文章,似乎所有人的旗帜都是“ 16”吗?

不确定如何集成它,我正在尝试:

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

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

但是它不起作用。 https://docs.microsoft.com/en-us/windows/desktop/shell/folder-copyhere

2 个答案:

答案 0 :(得分:1)

行情导致PowerShell自动将其内容键入为字符串。只需在该对话框中使用数字,它便可以正常工作。

这是因为shell.application.CopyHere()方法使用位掩码来确定选项。从编程上来说,比较二进制寄存器之间的效率更高。

Try $objFolder.CopyHere( $source, 16 )

答案 1 :(得分:0)

最后用我发现的一些代码进行了重写,这是最终的工作版本,显示进度条,但是如果文件已经存在,则没有提示停止复制:

$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)