[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 zaqmlp 于 2022-4-16 00:26 编辑
  1. <# :
  2. cls&echo off&cd /d "%~dp0"
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal \"%~f0\"|out-string|Invoke-Expression"
  4. pause
  5. exit
  6. #>
  7. $oldcsvfile="原文件.csv";
  8. $newcsvfile="结果.csv";
  9. $column=@('7','24') ;
  10. $len=6;
  11. if(-not (test-path -literal $oldcsvfile)){write-host ('"'+$oldcsvfile+'" not fount');exit;}
  12. $enc=[Text.Encoding]::GetEncoding('GB2312');
  13. $text=[IO.File]::ReadAllText($oldcsvfile, $enc).trim() -split '\r\n';
  14. $csv=$text[1..($text.Count-1)]|%{$_ -replace '[\r\n]',''}|ConvertFrom-CSV -head @(1..[int]$column[1]|%{$_.ToString()})|select $column;
  15. $dic=New-Object 'System.Collections.Generic.Dictionary[string, object]';
  16. foreach($col in $csv){
  17.     $name=$col.($column[0]);
  18.     $detail='';
  19.     $reg='^.{1,'+$len.toString()+'}';
  20.     $m=[regex]::match($col.($column[1]), $reg);
  21.     if($m.Success){
  22.         $detail=$m.groups[0].value;
  23.         if(-not $dic.ContainsKey($detail)){
  24.             [System.Collections.ArrayList]$arr=@();
  25.             $dic.add($detail, @(0, $arr));
  26.         }
  27.         $dic[$detail][0]++;
  28.         if($dic[$detail][1] -notcontains $name){
  29.             [void]$dic[$detail][1].add($name);
  30.         }
  31.     }
  32. }
  33. [System.Collections.ArrayList]$s=@();
  34. $title=@('明细', '数量', '名称') -join ',';
  35. [void]$s.add($title);
  36. foreach($k in ($dic.Keys|sort {$dic[$_][0]} -Descending)){
  37.     for($i=0;$i -lt $dic[$k][1].count;$i++){
  38.         $line=@($k, $dic[$k][0].ToString(), $dic[$k][1][$i]) -join ',';
  39.         [void]$s.add($line);
  40.     }
  41. }
  42. [IO.File]::WriteAllLines($newcsvfile, $s, $enc);
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 6# 78785858


    什么意思?加我微信或网盘分享csv文件
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 9# 78785858

已修改,
你的原文件24列只有4位,结果却是6位,按实际自行修改$len=4;
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

返回列表