朋友有一文件夾,全部是EML文件,約20G。他需要把這20G文件按每個(gè)文件夾2G分成10個(gè)。于是乎寫了以下腳本:
#目標(biāo)文件夾$scrfile = "d:/test"#起始目錄名$directory = 0#1825361100#76547428#判斷當(dāng)目錄的文件數(shù)大于0時(shí)while循環(huán)為真while( (dir -Path $scrfile -Filter *.eml ).count -gt 0){ #起始目錄名為1 $directory++#建立目錄 New-Item -Path "d:/$directory" -ItemType Directory -ErrorAction Stop#累加大小變量 $length = 0#dir配合where-object移動(dòng)文件到新目錄,記錄大小,當(dāng)大小達(dá)到指定大小,跳出管道. dir -Path $scrfile -Filter *.eml |Where-Object{ $objName = $_.Name $_.moveto("d:/$directory/$objName") $length += $_.length if($length -gt 1825361100) { continue } }}
注意dir在這里最好用where-object,而不要用foreach。
這樣一來(lái),朋友約4W份的EML郵件文件夾,瞬間在2秒鐘分成了10個(gè)目錄。
新聞熱點(diǎn)
疑難解答
圖片精選