powershell - 使用robocopy搜索子目录

标签 powershell robocopy powershell-5.0

我写了一个快速的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"

这样,您就可以将文件对象直接通过管道传递到其中,并指定目标位置和所需的任何选项。

关于powershell - 使用robocopy搜索子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641656/

相关文章:

windows - 如何在命令行中使用 Robocopy 复制带有 TimeStamp 的文件

powershell - 如何使用变量名从对象访问属性?

在 foreach 循环中调用时 Powershell 停止处理空参数

c# - 如何使用 C# 将参数传递给 PowerShell 脚本?

backup - 除了进度之外,如何在命令行中使 robocopy 保持静默?

c# - 如何将自定义 DLL 加载到 PowerShell 中

powershell - 如何检查密码复杂性?

powershell - 为什么 Get-Member 不提供所有属性和方法的完整列表。

powershell - 用 +(加号)符号启动 PowerShell one liner 是什么意思

Robocopy - 排除很多目录