某文件夹内有100w个文件,命名如下:
1.txt
2.txt
3.txt
...
1000000.txt
按照每5万个文件 ,根据文件名的数字大小 存放到对应的文件夹内,文件夹命名如下:
代码第二行:
$Path ="D:\001----nobackup---imdb\" 【设置你的100w个文件所在文件夹】
下面的代码31 32行,
$step=50000 【设置步进,每隔多少个文件】
$total=1100000 【设置总文件个数,这里设置为110w,应当大于总文件夹个数】
代码如下:-
- #$Path ="D:\000\"
- $Path ="D:\001----nobackup---imdb\"
- $Filter = '*.*'
- $_Debug = 1
- function processing_grep( $file ){
- #Foreach($file in $fileList){
-
- if($file -match ".*\\(.*).txt") {# 获取 id
- $file_id=$matches[1]
- }
- #write-host "f = " $file ", id= <"$file_id">"
- for($i=0;$i -le $total/$step;$i++) {
- $start=$step*$i+1
- $end=$step*($i+1)
- $path_mkdir="$Path"+"$start"+"-"+"$end"
- #write-host "($file_id -ge $start) -and ($file_id -le $end)"
- if((1*$file_id -ge $start) -and (1*$file_id -le $end) ) {
- mv $file $path_mkdir
- write-host "move $file to $path_mkdir" -ForegroundColor red
- }
- }#for
- #cmd /c "pause"
-
- #}#foreach
- }
-
-
- $step=10 #50000
- $total=200 #600000
- $step=50000
- $total=600000
- for($i=0;$i -le $total/$step;$i++) {
- $start=$step*$i+1
- $end=$step*($i+1)
- $path_mkdir="$Path"+"$start"+"-"+"$end"
-
- #write-host "mkdir <$path_mkdir>"
- if(!(Test-Path $path_mkdir)) {
- mkdir $path_mkdir
- write-host "mkdir $path_mkdir"
- }
- }
-
-
-
- write-host " filelist begin:"
- #$filelist = @()
- #Get-ChildItem -Path $Path | ?{$_.psiscontainer -eq $false} | %{$filelist += ($_.FullName )}
- ,@( Get-ChildItem -Path $Path | ?{$_.psiscontainer -eq $false} | %{processing_grep ($_.FullName )} )
-
-
复制代码 代码运行结果如下: |