[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# czvde


   
保存为bat与处理文件放一起
测试前请备份文件
  1. @Powershell "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]::Default))").Invoke()}" & pause & exit
  2. $files = Get-ChildItem  -Path .\* -Include *.txt;
  3. $count = $files.Count;
  4. $lastFile='';
  5. $dic = New-Object -TypeName 'System.Collections.Generic.Dictionary[string,object]'
  6. #文件按基名前缀分组
  7. foreach($file in $files)
  8. {
  9.     if($file.BaseName -match '^(.*?)-(\d+)$')
  10.     {
  11.          if(-not $dic.ContainsKey($Matches[1])){
  12.             $dic.Add($Matches[1],[System.Collections.ArrayList] @([int] $Matches[2]));
  13.          }
  14.          else {
  15.             [void] $dic[$Matches[1]].Add([int] $Matches[2]);
  16.          }
  17.     }
  18.    
  19. }
  20. #组内文件按基名后缀排序
  21. foreach($key in $dic.Keys)
  22. {
  23.     $count=$dic[$key].Count;
  24.     $counter=0;
  25.     foreach($index in ($dic[$key]|sort))
  26.     {
  27.       
  28.        switch(++$counter)
  29.        {
  30.         1       {$subfix = '_A';break;}
  31.         $count  {$subfix = '_B';break;}
  32.         default {$subfix = '';break;}
  33.        }
  34.        [string] $num=$index;
  35.        if($index -lt 10) {$num="{0:00}" -f $index}
  36.        if($key -match '(\w{4})$'){
  37.             ren "$key-$index.txt" "[$($Matches[1].ToUpper())][$count-$num$subfix]$key-$index.txt"
  38.        }
  39.         
  40.     }
  41. }
复制代码
QQ 33892006

TOP

返回列表