使用 robocopy 搜索子目录
Search sub-directories using robocopy
我编写了一个快速的 robocopy 脚本来搜索目录并移动符合特定条件(大小、名称、扩展名)的视频文件。它工作得很好,除了它不会搜索子目录。我尝试了 /s 标志,但它移动了整个目录。我只想要那些目录中的文件。有没有一种简单的方法可以将 robocopy 部分插入 Get-Child 或 powershell 中的循环?谢谢!
robocopy C:\psTesting\sourceDrive\ C:\psTesting\movieFolder\ *.mp4 *.avi *.mkv /min:600000000 /mov /np
我能想到的最简单的方法就是为它创建一个函数。这应该可以满足您的要求:
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"
这让您可以将文件对象直接通过管道传输到其中,并指定您的目的地和任何您想要的选项。
我编写了一个快速的 robocopy 脚本来搜索目录并移动符合特定条件(大小、名称、扩展名)的视频文件。它工作得很好,除了它不会搜索子目录。我尝试了 /s 标志,但它移动了整个目录。我只想要那些目录中的文件。有没有一种简单的方法可以将 robocopy 部分插入 Get-Child 或 powershell 中的循环?谢谢!
robocopy C:\psTesting\sourceDrive\ C:\psTesting\movieFolder\ *.mp4 *.avi *.mkv /min:600000000 /mov /np
我能想到的最简单的方法就是为它创建一个函数。这应该可以满足您的要求:
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"
这让您可以将文件对象直接通过管道传输到其中,并指定您的目的地和任何您想要的选项。