复制完整的文件?

时间:2017-02-22 13:16:00

标签: powershell

在使用powershell运行命令将文件从源复制到目标时,我遇到了如何仅复制没有运行任何操作的文件的问题?

如果有3个文件A / B / C,则A上仍然记录日志,而B和C完成记录。我只想使用powershell复制B和C.

任何想法都会有所帮助。

1 个答案:

答案 0 :(得分:0)

您可以从以下内容开始:

function Test-FileNotInUse 
{
    [cmdletbinding()]
    param(
        [parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias('FullName')] [string] $filePath
    )

    process {

        $inUse = $false

        try {
            $fileInfo = New-Object System.IO.FileInfo $filePath
            $fileStream = $fileInfo.Open([System.IO.FileMode]::OpenOrCreate, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)

            if ($fileStream) {
                $fileStream.Close()
            }
        }

        catch {
            $inUse = $true
        }

        if (!$inUse) {
            Write-Output $filePath
        }
    }
}


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

dir $source -recurse | Test-FileNotInUse | %{ copy $_ $destination }