0514-86177077
9:00-17:00(工作日)
朋友有一文件夾,全部是EML文件,約20G。他需要把這20G文件按每個文件夾2G分成10個。于是乎寫了以下腳本:
#目標文件夾 $scrfile = "d:\test" #起始目錄名 $directory = 0 #1825361100 #76547428 #判斷當目錄的文件數(shù)大于0時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移動文件到新目錄,記錄大小,當大小達到指定大小,跳出管道. dir -Path $scrfile -Filter *.eml |Where-Object{ $objName = $_.Name $_.moveto("d:\$directory\$objName") $length += $_.length if($length -gt 1825361100) { continue } } }
注意dir在這里最好用where-object,而不要用foreach。
這樣一來,朋友約4W份的EML郵件文件夾,瞬間在2秒鐘分成了10個目錄。
標簽:喀什 南昌 汕頭 臨汾 疫苗接種 襄陽 天水 湘潭
上一篇:Windows Powershell分析和比較管道結(jié)果
下一篇:Powershell小技巧--遠程對比服務配置
Copyright ? 1999-2012 誠信 合法 規(guī)范的巨人網(wǎng)絡通訊始建于2005年
蘇ICP備15040257號-8