使用robocopy搜索子目录

时间:2015-11-10 23:31:48

标签: powershell robocopy powershell-v5.0

我编写了一个快速的robocopy脚本来搜索目录并移动符合特定条件(大小,名称,扩展名)的视频文件。它工作得很好,除了它不会搜索子目录。我尝试了/ s标志但是移动了整个目录。我只想要那些目录中的文件。有没有一种简单的方法可以将robocopy部分插入到Get-Child或powershell中的循环中?谢谢!

robocopy C:\psTesting\sourceDrive\ C:\psTesting\movieFolder\ *.mp4 *.avi *.mkv /min:600000000 /mov /np

1 个答案:

答案 0 :(得分:3)

我能想到的最简单的方法就是为它做一个功能。这应该做你想要的:

Function PSRoboCopy{
[cmdletbinding()]
Param(
    [Parameter(Mandatory=$true,ValueFromPipelinebyPropertyName=$True)]
    [Alias('SourceFile')]
    [String[]]$FullName,
    [string]$Destination,
    [string]$Options
)
Process{
    $FileIn = Split-Path $FullName -Leaf
    $FolderIn = Split-Path $FullName
    & robocopy $FolderIn $Destination $FileIn $Options
}
}

Get-ChildItem 'C:\psTesting\sourceDrive\*' -Include '*.mp4','*.avi','*.mkv' -Recurse | Where{$_.length -gt 600000000} | PSRoboCopy -Destination 'C:\psTesting\movieFolder\' -Options "/mov /np"

这使您可以直接将文件对象传送到其中,并指定目标和所需的任何选项。