我有一个文件夹 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++
}
}
答案 0 :(得分:1)
Get-ChildItem $dirProc1 | select -first 3000