[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 yhcfsr 于 2018-11-26 12:12 编辑

我也来套Powershell
  1. <#
  2.     时间相同的数据必须要有8组且相邻,否则结果会混乱;
  3.     使用环境:仅限WIN10,WIN7(没使用过PS脚本的,自行百度食用方法)
  4. #>
  5. $content=[System.IO.File]::ReadAllLines('.\ref.txt',[text.encoding]::Default);
  6. <#变量初始化#>
  7. $count=$content.count;
  8. [System.Collections.ArrayList] $Result=@();
  9. $array=@{};
  10. $arr=@{};
  11. $lastTime=$i=0;
  12. do
  13. {
  14.     if(($i -ne 0) -and ($array.Count -eq 9)){
  15.        $Result+= New-Object psobject -Property @{
  16.             data1=$array.item('"data1"');
  17.             data2=$array.item('"data2"');
  18.             data3=$array.item('"data3"');
  19.             data4=$array.item('"data4"');
  20.             data5=$array.item('"data5"');
  21.             data6=$array.item('"data6"');
  22.             data7=$array.item('"data7"');
  23.             data8=$array.item('"data8"');
  24.             time =$array.item("time")   ;
  25.         }
  26.         $array.Clear();#清空上一组数据
  27.     }
  28.    if($i -eq $count){break;} #扫描完所有行后,退出循环
  29.    $line=$content[$i++] -split '\s{8}';#分割数据
  30.    if($line[0] -notmatch 'data\d+'){continue;}#非data数据行,跳过
  31.    $line[2]=[int]$line[2];#去小数点
  32.    <#将时间相同的数据保存为一个数组#>
  33.    if($lastTime -ne $line[1] ){$lastTime = $line[1];$array.Add("time",($line[1] -replace '^"(.*):\d+"$','$1'));$array.Add($line[0],$line[2]);}
  34.    else{$array.Add($line[0],$line[2]);}
  35.   
  36. }while($i -lt $count);
  37. <#输出到CSV文件#>
  38. $Result|Select-Object data1,data2,data3,data4,data5,data6,data7,data8,time|Export-Csv .\ref.csv -NoTypeInformation
复制代码
QQ 33892006

TOP

返回列表