在Powershell中将X文件从一个文件夹移动到另一个文件夹

时间:2012-11-22 16:03:51

标签: windows file powershell

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

    }
}

1 个答案:

答案 0 :(得分:1)

Get-ChildItem $dirProc1 | select -first 3000 

相关问题