找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24742|回复: 2

[原创代码] PowerShell文件分组_每5万个文件新建一个文件夹存放

[复制链接]
发表于 2019-10-16 22:48:11 | 显示全部楼层 |阅读模式
某文件夹内有100w个文件,命名如下:
1.txt
2.txt
3.txt
...
1000000.txt

按照每5万个文件 ,根据文件名的数字大小 存放到对应的文件夹内,文件夹命名如下:

代码第二行:

$Path ="D:\001----nobackup---imdb\" 【设置你的100w个文件所在文件夹】
下面的代码31 32行,   

$step=50000 【设置步进,每隔多少个文件】
$total=1100000 【设置总文件个数,这里设置为110w,应当大于总文件夹个数】


代码如下:

  1.   #$Path ="D:\000"
  2.   $Path ="D:\001----nobackup---imdb"
  3.   $Filter = '*.*'
  4.   $_Debug = 1
  5. function processing_grep(  $file ){  
  6.   #Foreach($file in $fileList){
  7.   
  8.         if($file -match ".*\\(.*).txt") {# 获取 id
  9.            $file_id=$matches[1]
  10.         }
  11.         #write-host "f = " $file ", id= <"$file_id">"
  12.    for($i=0;$i -le $total/$step;$i++) {
  13.            $start=$step*$i+1
  14.            $end=$step*($i+1)
  15.            $path_mkdir="$Path"+"$start"+"-"+"$end"
  16.        #write-host "($file_id -ge $start) -and ($file_id -le $end)"
  17.            if((1*$file_id -ge $start) -and (1*$file_id -le $end) ) {
  18.               mv  $file  $path_mkdir
  19.               write-host "move $file to $path_mkdir" -ForegroundColor red
  20.            }
  21.    }#for
  22.    #cmd /c "pause"
  23.    
  24.   #}#foreach
  25.   }
  26.    

  27.   $step=10 #50000
  28.   $total=200 #600000
  29.   $step=50000
  30.   $total=600000
  31.   for($i=0;$i -le $total/$step;$i++) {
  32.           $start=$step*$i+1
  33.           $end=$step*($i+1)
  34.           $path_mkdir="$Path"+"$start"+"-"+"$end"

  35.       #write-host "mkdir <$path_mkdir>"
  36.           if(!(Test-Path $path_mkdir)) {
  37.              mkdir $path_mkdir
  38.              write-host "mkdir $path_mkdir"
  39.           }
  40.   }


  41.   
  42.   write-host " filelist begin:"
  43.   #$filelist = @()
  44.   #Get-ChildItem -Path $Path  | ?{$_.psiscontainer -eq $false} |  %{$filelist += ($_.FullName )}
  45.   ,@( Get-ChildItem -Path $Path  | ?{$_.psiscontainer -eq $false} |  %{processing_grep ($_.FullName )} )
  46.   
  47.       
复制代码
代码运行结果如下:
发表于 2019-10-17 16:40:51 | 显示全部楼层
很复杂                                     .
发表于 2021-12-21 15:28:03 | 显示全部楼层
  1. Foreach($a in 1000..1999){sc "$a.txt" ""}  #生成1000个测试TXT文本
复制代码
  1. For($i=0;$i -ne 20;$i+=1){
  2.     md $i
  3.     dir -filter *.txt|select-object -first 50|%{move $_ $a}
  4. }
复制代码
正在学习powershell,写一个按数量分文件的简单代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 21:22 , Processed in 0.024877 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表