Board logo

标题: [文本处理] [已解决]BAT如何批处理call_history_2013-08.csv 的问题? [打印本页]

作者: 非常感谢    时间: 2013-8-19 20:06     标题: [已解决]BAT如何批处理call_history_2013-08.csv 的问题?

下面批处理的对象是a.txt 正常导出是b.txt         只是我的源文件是call_history_2013-08.csv   将其扩展名改txt后执行是失败的。只能把其用记事本先打开,内容全部复制,再新建一个a.txt 粘贴上去,之后再执行批处理。有点繁琐。
是否有简单方法,谢谢!!!
  1. @echo off
  2. for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
  3. for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
  4.     set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
  5. )
  6. (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
  7.     for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
  8.     for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
  9.         set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
  10.     )
  11. ))>$
  12. set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
  13. (
  14.     for /f "tokens=1*" %%a in ('sort /r ) do echo,%%b
  15.     echo,&echo,合计:%h%:%m:~1%:%s:~1%
  16. )>b.txt
  17. del $
复制代码

作者: ADSL0125    时间: 2013-8-19 20:14

CSV就是文本格式,直接改后缀名吧
作者: gawk    时间: 2013-8-19 21:10

  1. type call_history_2013-08.csv > a.txt
复制代码

作者: 非常感谢    时间: 2013-8-19 22:01

本帖最后由 非常感谢 于 2013-8-25 13:00 编辑

回复 3# gawk
测试可以
作者: 非常感谢    时间: 2013-8-19 22:05

回复 2# ADSL0125
测试时改扩展名导出后是空的,只能手动先打开call_history_2013-08.csv,把全部内容, 复制,再建立一个空的a.txt.粘贴上去,然后对a.txt进行批处理。
作者: gawk    时间: 2013-8-19 22:07

回复 4# 非常感谢


    能否把你的csv文件压缩一下传上来我试试
作者: 非常感谢    时间: 2013-8-19 22:24     标题: 批处理call_history_2013-08.csv 的问题?

下面批处理的对象是a.txt 正常导出是b.txt         只是我的源文件是call_history_2013-08.csv   将其扩展名改txt后执行是失败的。只能把其用记事本先打开,内容全部复制,再新建一个a.txt 粘贴上去,之后再执行批处理。有点繁琐。
是否有简单方法,谢谢!!!
  1. @echo off
  2. for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
  3. for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
  4.     set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
  5. )
  6. (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
  7.     for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
  8.     for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
  9.         set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
  10.     )
  11. ))>$
  12. set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
  13. (
  14.     for /f "tokens=1*" %%a in ('sort /r $') do echo,%%b
  15.     echo,&echo,合计:%h%:%m:~1%:%s:~1%
  16. )>b.txt
  17. del $
复制代码

作者: terse    时间: 2013-8-19 22:40

本帖最后由 terse 于 2013-8-19 22:42 编辑

回复 7# 非常感谢
3楼正解
  1. @echo off
  2. for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
  3. for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
  4.     set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
  5. )
  6. type call_history_2013-08.csv >a.txt
  7. (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
  8.     for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
  9.     for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
  10.         set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
  11.     )
  12. ))>$
  13. set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
  14. (
  15.     for /f "tokens=1*" %%a in ('sort /r ) do echo,%%b
  16.     echo,&echo,合计:%h%:%m:~1%:%s:~1%
  17. )>b.txt
  18. del $
  19. pause
复制代码

作者: gawk    时间: 2013-8-19 22:42

回复 7# 非常感谢


我这里测试没有问题

C:\>type call_history_2013-08.csv > a.txt

C:\>type a.txt

日期;日期;项目;目的地;类别;费率;通话时长;信用点数金额;货币

"2013年8月10日 23:10";"2013-08-02T23:10:57+00:00";"+861077777777";"China-Beijing";"通话";0.000;00:10:09;0.000;KRW
"2013年8月10日 23:10";"2013-08-02T23:10:39+00:00";"+861011111111";"China-Beijing";"通话";0.000;00:05:07;0.000;KRW
"2013年8月10日 23:10";"2013-08-02T23:10:22+00:00";"+861022222222";"China-Beijing";"通话";0.000;01:08:08;0.000;KRW
"2013年8月9日 23:10";"2013-08-02T23:10:57+00:00";"+8610333333333";"China-Beijing";"通话";0.000;00:19:09;0.000;KRW
"2013年8月9日 23:10";"2013-08-02T23:10:39+00:00";"+8610555555555";"China-Beijing";"通话";0.000;00:25:07;0.000;KRW
作者: gawk    时间: 2013-8-19 22:45

回复 7# 非常感谢


    另外,请不要给我发私人消息了。你直接在我的回帖下面点击“回复”,论坛会自动通知我的。
作者: weichenxiehou    时间: 2013-8-19 22:45

目测楼主测试失败的原因为:csv文件中没有今日的数据,也就是没有“2013年8月19日”的数据。
作者: 非常感谢    时间: 2013-8-19 22:48

回复 8# terse
批处理后失败了,可不可以直接把call_history_2013-08.csv批处理后导出b.txt?
作者: 非常感谢    时间: 2013-8-19 22:56

a.txt是正常的,cvs里面我加了19的日期。出现如下图,我想可不可以不分2步骤,直接把源文件call_history_2013-08.csv导出b.txt


回复 11# weichenxiehou
作者: weichenxiehou    时间: 2013-8-19 23:04

本帖最后由 weichenxiehou 于 2013-8-19 23:07 编辑

回复 13# 非常感谢
terse弄掉一个单引号:
  1. @echo off
  2. for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
  3. for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
  4.     set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
  5. )
  6. type call_history_2013-08.csv >a.txt
  7. (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
  8.     for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
  9.     for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
  10.         set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
  11.     )
  12. ))>$
  13. set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
  14. (
  15.     for /f "tokens=1*" %%a in ('sort /r $') do echo,%%b
  16.     echo,&echo,合计:%h%:%m:~1%:%s:~1%
  17. )>b.txt
  18. del $
  19. pause
复制代码

作者: weichenxiehou    时间: 2013-8-19 23:06

本帖最后由 weichenxiehou 于 2013-8-19 23:08 编辑

我发现不是谁弄掉的,是论坛的问题,'sort /r $'最后两个字符会被去掉。

补:也不能算在论坛的问题上,从chrome切到ie后就可以了。
作者: 非常感谢    时间: 2013-8-19 23:13

本帖最后由 非常感谢 于 2013-8-19 23:16 编辑

回复 14# weichenxiehou

从chrome切到ie后就可以了。
补充一下出来的a.txt是多余的,上面脚本是针对a.txt,  可不可以直接针对csv源文件处理
作者: terse    时间: 2013-8-19 23:49

本帖最后由 terse 于 2013-8-19 23:51 编辑

ie 编辑下
  1. @echo off
  2. for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
  3. for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
  4.     set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
  5. )
  6. type call_history_2013-08.csv |findstr /i %yy%年%mm%月%dd%日>b.txt
  7. (for /f "tokens=1-7delims=;" %%a in (b.txt)do (
  8.     for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
  9.     for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
  10.         set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
  11.     )
  12. ))>$
  13. set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
  14. (
  15.     for /f "tokens=1*" %%a in ('sort /r $') do echo,%%b
  16.     echo,&echo,合计:%h%:%m:~1%:%s:~1%
  17. )>b.txt
  18. del $
  19. pause
复制代码

作者: 非常感谢    时间: 2013-8-20 00:44

回复 17# terse


    谢谢,测试成功!!!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2