如何将特定YEAR的文件移动到具有相对路径的新目录?

时间:2013-04-08 10:02:19

标签: powershell

Windows 7中,我想使用PowerShell移动当前目录及其子目录,子子目录等中的所有文件,并使用某个LastWrite YEAR ,到一个带有相对路径的新目录。

有人可以写下我必须使用的PowerShell行代码吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Move-Item功能将文件从一个路径移动到另一个路径

示例:

Move-Item 'c:\YourFolder\*' 'c:\DestinationFolder'

这会将文件夹中的所有文件移动到目标文件夹(*)。


要从特定日期移动文件,您必须将其传输到where-object函数:

示例:

Get-ChildItem 'C:\folder' | where-object {$_.lastwritetime.Year -eq 2013} |
Move-Item -destination 'c:\DestinationFolder'

http://technet.microsoft.com/en-us/library/ee176910.aspx

答案 1 :(得分:0)

这是保持相对路径的解决方案。你需要的是CD到源DIR然后更新

    $files = Get-ChildItem -Recurse -File | where {$_.LastWriteTime.Year -eq 2012}

并运行

    $baselength = (Get-Location).Path.Length + 1
    $destDir = 'G:\dest'

    $files = Get-ChildItem -Recurse -File | where {$_.LastWriteTime.Year -eq 2012}

    $files | foreach {
        Write-Verbose "moving $_.fullname"    
        $dest = Join-Path $destDir $_.FullName.Substring($baselength)
        if ( -not (Test-Path (Split-Path $dest)))
        {
            New-Item -ItemType directory -Path (Split-Path $dest) | Out-Null
        }
        Move-Item $_.FullName $dest -Force
    }