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

[文本处理] 求助批处理CSV文件处理

大神们,最近遇到一个难题,每天要做重复的工作,出现下面的问题,请帮忙看看能不能使用BAT处理,在此非常的感谢大家帮忙。

问题描述:(由于论坛无法上传附件,暂时使用文字代替,请谅解)(附件可以在下面链接中下载:链接:https://pan.baidu.com/s/19CwW7C4ICJV7GT8_buba5Q
提取码:21a6)

在CSV文件中,有三种情况:

第一种:如果查询到 “Component ID”这列中有“10:”这种字符,直接把10:去除,并把10 这个数字复制到 对应行的“Panel”中,并把处理好的文件复制到D盘123文件夹中
第二种:如果查询到 “Component ID”这列中没有“10:”这种字符,直接复制文件到D盘123文件夹中
第三种:如果查询到 “Component ID”这列中,某一行是空格的,直接跳过处理下一行

样本:
BARCODE        INDEX        DATE        S.TIME        E.TIME        CYCLE        JOB        RESULT        USER        LOTINFO        MACHINE        SIDE                                                                                               
ST2111231C6        16551        2021/11/23        18:14:57        18:15:04        7        T13756_BOT        GOOD                          KOHYOUNG        B                                                                                               
PAD ID        Component ID        Volume(%)        Height(mil)        Area(%)        Result        Barcode        OffsetX(mil)        OffsetY(mil)        Array        Panel        Volume(mil3)        Area(mil2)        OffsetX(%)        OffsetY(%)        PinNumber        Vol_Min(%)        Vol_Max(%)        Height_Low(mil)        Height_High(mil)        Area_Min(%)        Area_Max(%)        OffsetX_Error(mil)        OffsetY_Error(mil)
1        10:B2        112.553        5.108        103.564        GOOD        ST2111231C6        -0.063        0.258        1        1        4600        901        -0.178        0.935        1        40        180        50.038        249.936        50        200        12.42913        9.66142
2        10:B2        113.519        5.247        101.684        GOOD        ST2111231C6        0.209        0.204        1        1        4640        884        0.588        0.74        2        40        180        50.038        249.936        50        200        12.42913        9.66142

  1. powershell "(type a.csv) -replace '^(.*?,)(.*?):(.*?)(,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,)(.*?)(,.*)$','$1$3$4$2$6'" >b.csv
复制代码

TOP

感谢 idwma的帮忙
但是更改时,CSV文件的第二行发生改变,请帮忙看看是什么原因

顺便帮忙看看是否可以做到下面的几点:
1:可以自动文件夹:如D:\123  修改完成后  ,直接剪切到 D:\456中
2:保持文件名不改变
3:可以连续的运行,如果出现文件没有处理完成,需要重复再处理一次

TOP

本帖最后由 idwma 于 2021-11-27 23:11 编辑

回复 3# 司马光2008
  1. powershell "dir D:\123\*.csv|foreach{out-file -enc default D:\456\$_.name -inp ((type $_.fullname) -replace '^(\d*?,)(.*?):(.*?)((?:,.*?){8},)(.*?)(,.*)$','$1$3$4$2$6');del $_.fullname}"
复制代码

TOP

上面这个无法运行哦,
提示:正则表达式模式 。。 无效。

TOP

帮忙看看是什么问题,谢谢

TOP

  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. dir D:\123\*.csv|foreach{
  3. $a="D:\456\"+$_.name
  4. out-file -enc default $a -inp ((type $_.fullname) -replace '^(\d+?,)(.*?):(.*?)(,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,)(.*?)(,.*)$','$1$3$4$2$6')
  5. del $_.fullname
  6. }
复制代码
1

评分人数

TOP

感谢 idwma的帮忙

TOP

最后的批处理已经可以实现功能,但是只能运行一次,我想无限循环的运行批处理,请问什么修改,帮忙看看,谢谢。

TOP

回复 9# 司马光2008
  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. do{
  3.     dir D:\123\*.csv|foreach{
  4.         $a="D:\456\"+$_.name
  5.         out-file -enc default $a -inp ((type $_.fullname) -replace '^(\d+?,)(.*?):(.*?)(,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,)(.*?)(,.*)$','$1$3$4$2$6')
  6.         del $_.fullname
  7.     }
  8. }while(!(sleep 1))
复制代码

TOP

感谢 idwma

TOP

经过几天的测试,发现文件转换后剪切到456文件夹里面的文件无法删除,并且文件大小都是1k的空文件

TOP

回复 12# 司马光2008


    先结束脚本就可以删除文件了。
微信:flashercs
QQ:49908356

TOP

脚本需要连续几天运行

TOP

换一种方式
  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. do{
  3.     dir D:\123\*.csv|foreach{
  4.         $a="D:\456\"+$_.name
  5.         move $_.fullname D:\456\
  6.         if($?){
  7.             $b=type $a
  8.             sc $a ($b -replace '^(\d+?,)(.*?):(.*?)(,.*?,.*?,.*?,.*?,.*?,.*?,.*?,.*?,)(.*?)(,.*)$','$1$3$4$2$6')
  9.         }
  10.     }
  11. }while(!(sleep 1))
复制代码

TOP

返回列表