通过搜索此网站并学习 Windows 批处理脚本这种荒谬的语言,我取得了很大进展,但坦率地说,我陷入了困境。下面的示例来自我们实验室的旧辐射计模块,该模块定期将其数据记录为 TXT 文件。我试图将它们解析为正确的 CSV。这个想法是有一个 .bat 文件可以定期运行,将某个文件夹中的所有 TXT 日志更改为 CSV 格式。
我认为可以这样做:删除空行(=标题)之前的所有内容,用制表符替换空格(因为值之间的间距不一致,所以这是必要的),用逗号替换制表符,删除双逗号。
*。TXT:
PRODUCES
MFRSR Detector Temp , degC
HTR V , V
MFRSR Thermopile Total , W/m^2
MFRSR 414.0nm Total , (W/m^2)/nm
MFRSR 496.6nm Total , (W/m^2)/nm
MFRSR 613.0nm Total , (W/m^2)/nm
MFRSR 670.9nm Total , (W/m^2)/nm
MFRSR 869.3nm Total , (W/m^2)/nm
MFRSR 937.6nm Total , (W/m^2)/nm
MFRSR Thermopile Diffuse , W/m^2
MFRSR 414.0nm Diffuse , (W/m^2)/nm
MFRSR 496.6nm Diffuse , (W/m^2)/nm
MFRSR 613.0nm Diffuse , (W/m^2)/nm
MFRSR 670.9nm Diffuse , (W/m^2)/nm
MFRSR 869.3nm Diffuse , (W/m^2)/nm
MFRSR 937.6nm Diffuse , (W/m^2)/nm
MFRSR Thermopile DirNorm , W/m^2
MFRSR 414.0nm DirNorm , (W/m^2)/nm
MFRSR 496.6nm DirNorm , (W/m^2)/nm
MFRSR 613.0nm DirNorm , (W/m^2)/nm
MFRSR 670.9nm DirNorm , (W/m^2)/nm
MFRSR 869.3nm DirNorm , (W/m^2)/nm
MFRSR 937.6nm DirNorm , (W/m^2)/nm
42099 0.29236 -0.55603 45.20 7.4819 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5 *5
42099 0.57222 0.01180 45.20 7.8285 0.9378 0.0086 0.0086 0.0032 0.0040 0.0018 0.0005 0.9473 0.0093 0.0086 0.0032 0.0040 0.0018 0.0005 -0.8090 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
42099 0.57291 0.01415 45.20 7.8382 1.3587 0.0093 0.0086 0.0032 0.0040 0.0018 0.0005 1.3725 0.0093 0.0086 0.0032 0.0040 0.0023 0.0005 -0.9770 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
42099 0.57361 0.01656 45.20 7.8998 2.6372 0.0099 0.0100 0.0032 0.0040 0.0023 0.0005 2.6641 0.0099 0.0100 0.0032 0.0040 0.0023 0.0005 -1.6210 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
*.csv:
42099,0.29236,-0.55603,45.20,7.4819,*5,*5,*5,...
42099,0.57222,0.01180,45.20,7.8285,0.9378,0.0086,...
42099,...
...
这里是否有人了解批处理并可以帮助我开始?
答案1
命令行:
powershell $h=25;$f=gc data.txt;$f[$h..($f.count-1)]^|%{$_.Trim()-replace'\s+',','>>data.csv }
或者:
powershell $h=25;$f=gc data.txt;$f[$h..($f.count-1)]^|%{('\"'+$_.Trim()+'\"')-replace'\s+','""";"""'^|ac data.csv}
powershell脚本:
$h=25;$f=gc data.txt;$f[$h..($f.count-1)]|%{$_.Trim()-replace'\s+',','>>data.csv}
或者:
$h=25;$f=gc data.txt;$f[$h..($f.count-1)]|%{('"'+$_.Trim()+'"')-replace'\s+','";"'>>data.csv }