我正在修改工作流以同时处理许多文件。在实际实现之前,我已经编写了一段(拙劣的)代码。
问题是循环..被循环!。脚本的想法是将文件列表获取到Array中(让其称为“原始”)创建新的数组(使它们称为“ LoopingArray”)以处理成批“ x”个文件并删除已处理的文件。项目组成数组以创建一个新数组以处理..etc,直到原始数组为空。
为每个项目创建一个txt文件,因此,当“原始”数组为空时,Do..While应该停止。但事实并非如此。它不断地创建文件。我做错了什么?:
Workflow Test-Workflow {
$SourceFolder = "c:\test\whatever"
$Files = [System.IO.Directory]::EnumerateFiles($SourceFolder, '*.*', 'AllDirectories')
$ArrayCount = $Files| Measure-Object | Select-Object Count
Do {
$NewArray = $Files | Select-Object -First 20
$Files = $Files | Where-Object { $NewArray -notcontains $_ }
$ArrayCount = $Files| Measure-Object | Select-Object Count
ForEach -Parallel ($it in $NewArray)
{
$Name = Get-Random
$Filepath = "C:\temp\test\"+"$Name"+".txt"
$it | Out-File -FilePath $Filepath
}
} Until ($ArrayCount.Count -eq "0")
}
谢谢!