我有一个文件夹A,其中包含要处理的 75000 个文件。我旁边有 4 个文件夹(A、B、C、D),一次可以处理 3000 个文件。
我想要一个脚本从 A 获取 3000 个文件并将其放入 B。然后它应该再获取 3000 个文件并放入 C,然后是 D,最后是 E
以下是我到目前为止的代码。这需要 10 个文件并将它们移动到 B 中,但是它只是永远坐在那里,没有将任何文件放入 C、D 或 E 中。
有没有办法退出代码的 EnumerateFiles 部分?我只想移动它找到的第一个 X 文件,我不在乎 A 中有多少文件。
任何想法?
$dirBase = "\\networkDir\A\"
$dirProc1 = "\\networkDir\B\"
$dirProc2 = "\\networkDir\C\"
$dirProc3 = "\\networkDir\D\"
$dirProc4 = "\\networkDir\E\"
cd $dirBase
$directoryInfo1 = Get-ChildItem $dirProc1 | Measure-Object
$directoryInfo2 = Get-ChildItem $dirProc2 | Measure-Object
$directoryInfo3 = Get-ChildItem $dirProc3 | Measure-Object
$directoryInfo4 = Get-ChildItem $dirProc4 | Measure-Object
if ($directoryInfo1.count -eq 0) {
MoveFiles $dirBase $dirProc1
}
if ($directoryInfo2.count -eq 0) {
MoveFiles $dirBase $dirProc2
}
if ($directoryInfo3.count -eq 0) {
MoveFiles $dirBase $dirProc3
}
if ($directoryInfo4.count -eq 0) {
MoveFiles $dirBase $dirProc4
}
function MoveFiles([string]$srcDir, [string]$dest)
{
$FileLimit = 10
$Counter = 0
[IO.Directory]::EnumerateFiles($srcDir) | Where-Object {$Counter -lt $FileLimit} | %{
#Get-ChildItem $srcDir | Select-Object -first $FileLimit | %{
Move-Item $_ -destination $dest
$Counter++
}
}