2

我有一个文件夹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++

    }
}
4

1 回答 1

1
Get-ChildItem $dirProc1 | select -first 3000 

?

于 2012-11-22T18:25:30.687 回答