(批处理)按指定符号分割提取数据字符串?

网友求助:我有很多行数据
[08:20:33.505]收←◆Node=0x1503,Temp=23.7

[08:20:36.492]收←◆Node=0x1503,Temp=23.7

[08:20:39.477]收←◆Node=0x1503,Temp=23.7
如何提取成两列
08:20:33 Temp=23.7
08:20:36 Temp=23.7
08:20:39 Temp=23.7
并输出为csv文件
以下是我在网上找到的
for /f "delims=" %%a in ('dir /b %time%\*.txt') do ((for /f "usebackq tokens=1-18" %%i in ("%time%\%%a") do (echo %%i,%%j,%%k,%%l,%%m,%%n,%%o,%%p,%%q,%%r,%%s,%%t,%%u,%%v,%%w,%%x,%%y,%%z))>"%time%\%%~na.csv")
但是我修改delims=[]后没反应,还跟原来一样
怎么修改?

仅以问题中的样例说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起双击运行

<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 从一个txt文本文件里提取指定特征的字符内容
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "current=%cd%"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$current=$env:current;
$enc=[Text.Encoding]::GetEncoding('GB2312');
$files=@(dir -literal $current|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
if($files.length -ge 1){
    write-host $files[0].FullName;
    $text=[IO.File]::ReadAllLines($files[0].FullName, $enc);
    for($j=0;$j -lt $text.length;$j++){
        $m=[regex]::match($text[$j].trim(), '\[(\d+:\d+:\d+\.\d+)\].*(Temp=-?\d+(?:\.\d+)?)');
        if($m.Success){$m.groups[1].value+"`t"+$m.groups[2].value;}
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a520521bc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值