如何使用Powershell脚本将数据从位置A复制到位置B?

时间:2015-03-02 10:14:21

标签: powershell unc get-childitem copy-item

我想使用Powershell脚本来复制递归到其他位置的文件夹。这必须是Powershell todo:

  • 将文件和文件夹从位置A复制到位置B
  • UNC PAth必须具有(例如\ net.local \ Files \ EDV)
  • 在位置B必须全部清空文件夹清除
  • 位置B的结构必须等于位置A
  • 应在B。
  • 上创建缺少的文件夹
  • 它应该只复制超过180天的文件
  • 脚本必须创建一个日志文件,其中包含有关文件名和路径,文件大小,文件日期
  • 的信息

我已经开始使用这个脚本了:

$a = '\\serverA\folderA'
$b = '\\serverB\folderB'

#This copies the files
Get-ChildItem $a -Recurse -File | Foreach_Object {Copy-Item $_ -Destination $b}

#Removes empty files
Get-ChildItem $b -File | Foreach-Object {IF($_.Length -eq 0) {Remove-Item $_}}

我需要帮助..

1 个答案:

答案 0 :(得分:1)

此代码将目录复制到另一个目录,其余目录应该是直接的。在$toreplace中,每个反斜杠都应使用额外的反斜杠进行转义。

$a = [System.IO.DirectoryInfo]'C:\Users\oudou\Desktop\dir'
$b = [System.IO.DirectoryInfo]'C:\Users\oudou\Desktop\dir_copy'


function recursive($a,$b)
{
    foreach ($item in @(Get-ChildItem $a.FullName))
    {
        if($item -is [System.IO.DirectoryInfo])
        {
            if ( -not (Test-Path $item.FullName.Replace($a.FullName,$b.FullName)))
            {
                New-Item -ItemType Directory $item.FullName.Replace($a.FullName,$b.FullName)
            }
            $dest = Get-ChildItem $item.FullName.Replace($a.FullName,$b.FullName)
            $dest
            recursive($item, $dest)
        }
        else
        {
            [string]$y = $item.FullName
            $toreplace = "C:\\Users\\oudou\\Desktop\\dir"
            $replace = "C:\Users\oudou\Desktop\dir_copy"
            $y -replace $toreplace , $replace            
            Copy-Item  $item.FullName  ($item.FullName -replace $toreplace , $replace)
        }
    }
}


recursive $a $b