処理する 75000 個のファイルを含むフォルダーAがあります。一度に 3000 個のファイルを処理できる 4 つのフォルダー (A、B、C、D) があります。
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++
}
}