复制/创建多个文件

时间:2012-12-16 15:45:42

标签: powershell file-io powershell-v3.0

我需要首先创建然后复制数百个文件夹&文件通过powershell(首先在本地商店创建它们,然后将它们复制到远程商店)。 但是,当我的foreach循环运行时,每40次左右的写入尝试因“阻止文件/文件夹的另一个进程”而失败。 我目前使用每个文件创建(100毫秒)之间的简单休眠来修复此问题。但是,我想知道是否有更好的方法来做到这一点?特别是在复制多个文件时,睡眠将取决于网络延迟,对我来说似乎不是一个好的解决方案。

在开始另一个操作之前,有没有办法“等待”直到文件的写入操作完成?或者检查文件是否仍被一个进程阻止并等待它再次空闲?

1 个答案:

答案 0 :(得分:0)

您是否尝试将代码作为工作运行?例如:

foreach ($file in $files) {
    $job = Start-Job -ScriptBlock {
     #operation here..
    } | Wait-Job
    #Log result of job using ex. $job and:  '$job | Receive-Job'   to get output
}

您也可以将其扩展为创建多个作业,然后在继续之前使用Get-Job | Wait-Job等待所有作业完成。