标题: [文本处理] [已解决]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 粘贴上去,之后再执行批处理。有点繁琐。
是否有简单方法,谢谢!!!- @echo off
- for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
- for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
- set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
- )
-
- (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
- for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
- for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
- set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
- )
- ))>$
-
- set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
-
- (
- for /f "tokens=1*" %%a in ('sort /r ) do echo,%%b
- echo,&echo,合计:%h%:%m:~1%:%s:~1%
- )>b.txt
- del $
复制代码
作者: ADSL0125 时间: 2013-8-19 20:14
CSV就是文本格式,直接改后缀名吧
作者: gawk 时间: 2013-8-19 21:10
- 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 粘贴上去,之后再执行批处理。有点繁琐。
是否有简单方法,谢谢!!!- @echo off
- for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
- for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
- set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
- )
-
- (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
- for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
- for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
- set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
- )
- ))>$
-
- set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
-
- (
- for /f "tokens=1*" %%a in ('sort /r $') do echo,%%b
- echo,&echo,合计:%h%:%m:~1%:%s:~1%
- )>b.txt
- del $
复制代码
作者: terse 时间: 2013-8-19 22:40
本帖最后由 terse 于 2013-8-19 22:42 编辑
回复 7# 非常感谢
3楼正解- @echo off
- for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
- for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
- set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
- )
- type call_history_2013-08.csv >a.txt
- (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
- for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
- for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
- set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
- )
- ))>$
-
- set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
-
- (
- for /f "tokens=1*" %%a in ('sort /r ) do echo,%%b
- echo,&echo,合计:%h%:%m:~1%:%s:~1%
- )>b.txt
- del $
- 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弄掉一个单引号:- @echo off
- for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
- for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
- set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
- )
- type call_history_2013-08.csv >a.txt
- (for /f "tokens=1-7delims=;" %%a in ('findstr %yy%年%mm%月%dd%日 a.txt')do (
- for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
- for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
- set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
- )
- ))>$
-
- set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
-
- (
- for /f "tokens=1*" %%a in ('sort /r $') do echo,%%b
- echo,&echo,合计:%h%:%m:~1%:%s:~1%
- )>b.txt
- del $
- 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 编辑下- @echo off
- for /f "delims=U" %%a in ('cmd /u/c echo,唉') do set "tab=%%a"
- for /f "tokens=1-3delims=-./" %%a in ("%date:~,10%") do (
- set /a yy=%%a,mm=1%%b-100,dd=1%%c-100
- )
- type call_history_2013-08.csv |findstr /i %yy%年%mm%月%dd%日>b.txt
-
- (for /f "tokens=1-7delims=;" %%a in (b.txt)do (
- for /f %%i in ("%%~a") do echo,%%g %%i%tab%%%~c%tab%%%g
- for /f "tokens=1-3 delims=:" %%i in ("%%g") do (
- set /a h+=1%%i-100,m+=1%%j-100,s+=1%%k-100
- )
- ))>$
-
- set /a k1=s/60,s=s%%60+100,m+=k1,k2=m/60,m=m%%60+100,h+=k2
-
- (
- for /f "tokens=1*" %%a in ('sort /r $') do echo,%%b
- echo,&echo,合计:%h%:%m:~1%:%s:~1%
- )>b.txt
- del $
- pause
复制代码
作者: 非常感谢 时间: 2013-8-20 00:44
回复 17# terse
谢谢,测试成功!!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |