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

[文本处理] 将文本中的内容按要求格式化并按指定列的用时数排序和统计总用时数

本帖最后由 pcl_test 于 2017-4-30 23:04 编辑

批处理:当日合计
批处理前:
日期、时间 项目 类别 费率 已用量 信用点数金额*

9-26 08:55 +111111111111 , China  通话
  ? 0.000 00:00 ? 0.000
9-26 08:54 +222222222222 , China  通话
  ? 0.000 00:00 ? 0.000
9-26 08:52 +333333333333 , China  通话
  ? 0.000 11:11 ? 0.000
9-26 08:52 +444444444444 , China  通话
  ? 0.000 00:08 ? 0.000

批处理后:

2013年9月26日        +333333333333        00:11:11
2013年9月26日        +444444444444        00:00:08
2013年9月26日        +111111111111        00:00:00
2013年9月26日        +222222222222        00:00:00

合计:0:11:19

本帖最后由 非常感谢 于 2013-9-27 19:08 编辑

回复 24# terse

http://www.bathome.net/viewthread.php?tid=26288&highlight=

无效号码的标准是。一个号码的打3遍,通1遍,2遍不通算有效号码。打3遍,3遍不通算无效。脚本您以前给过了。上面是地址
下面是您给的代码:代码第五行去掉00:就可以用了。
@echo off&setlocal enabledelayedexpansion
if "%~1" == "" (
        set /a m=n=0
        (for /f "tokens=1-3" %%a in ('%~s0 #‘) do (
                if "%%a" == "00:00:00" (
                        if not defined %%c set /a n+=1&echo %%b %%c %%a
                ) else         for /f "tokens=1-3 delims=:" %%i in ("%%a") do (
                                set /a hh+=1%%i-100,mm+=1%%j-100,ss+=1%%k-100
                                if not defined %%c set /a m+=1
                        )
                                set %%c=a
        )
        echo 合计无效号码数:!n! 个&echo 合计有效号码数:!m! 个)>b.txt
        pause&exit
) else (for /f "tokens=1-3" %%i in (a.txt) do @if not %%k# == # @echo %%k %%i %%j)|sort /r

  --------------------------------------------------------------------------------------------------------
谢谢您!!!

TOP

本帖最后由 terse 于 2013-9-27 16:27 编辑

回复 20# 非常感谢
怎么测试的 最好贴出代码 以便更快的解决问题 或者是无效号码的标志是什么
前面代码已修改 添加显示小时

TOP

回复 21# DAIC

谢谢您,2楼脚本的导出b.txt学会了,,,,,,今天真高兴。也谢谢batman.
>>b.txt

TOP

回复 19# 非常感谢


论坛有重定向的教程
http://www.bathome.net/thread-3296-1-1.html

TOP

回复 18# 非常感谢


    第16行还有一个echo

TOP

回复 16# terse
2013年9月26日 +333333333333 11:11
2013年9月26日 +444444444444 00:08
2013年9月26日 +222222222222 00:00
2013年9月26日 +111111111111 00:00
合计:00:11:19

---------------------------------------
用主题里的4个号码做了测试,,,估计是时间格式00:00:00问题     提取无效号码后的图片

TOP

回复 17# batman


    我相信这个帖子会让我学会重定向,再过1,2年也能看懂您写的代码(不是难度大的)就可以了,,,,

TOP

本帖最后由 foxJL 于 2013-9-27 15:32 编辑

回复 8# DAIC
  1. @echo off >b.txt
  2. @echo off&setlocal enabledelayedexpansion
  3. for /f "skip=1 delims=" %%a in (a.txt) do (
  4.   set /a n+=1
  5.   if not defined str (
  6.     for /f "tokens=1,2,4 delims=- " %%b in ("%%a") do set "str=%date:~,4%年%%b月%%c日 %%d"
  7.     ) else (
  8.     for /f "tokens=3,4 delims=: " %%b in ("%%a") do (
  9.       set "_%%b%%c_!n!=!str! %%b:%%c"&set "str="
  10.       set /a m+=1%%b %% 100,s+=1%%c %% 100
  11.       if !s! gtr 60 set /a s-=60,m+=1
  12.       if !m! gtr 60 set /a m-=60,h+=1
  13.     )
  14.   )
  15. )
  16. for /f "tokens=2 delims==" %%a in ('set _^|sort /r') do echo,%%a
  17. for %%a in (h m s) do set "%%a=00!%%a!"&set "%%a=!%%a:~-2!"
  18. echo,合计:%h%:%m%:%s% >>b.txt
  19. pause>nul
复制代码

TOP

回复 15# 非常感谢


    那能否请楼主谈谈,你在批处理之家学到了什么知识,怎么样才能让你学会重定向到文本这一基础操作?
***共同提高***

TOP

本帖最后由 terse 于 2013-9-27 16:26 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. if "%~1" == "" (
  3. set d=%date:~,4%年
  4. (for /f "tokens=1*" %%i in ('%~s0 $ ^|sort/r') do (
  5. echo %%j %%i
  6. for /f "tokens=1-3 delims=:" %%a in ("%%i") do (
  7. set /a h+=1%%a-100,m+=1%%b-100,s+=1%%c-100
  8. )
  9. )
  10. set /a m+=s/60,h+=m/60,s%%=60,m%%=60
  11. for %%a in (h m s) do if !%%a! lss 10 set %%a=0!%%a!
  12. echo,合计:!h!:!m!:!s!)>b.txt
  13. exit
  14. ) else for /f "skip=1tokens=1-3" %%a in (a.txt) do (
  15.    if "%%c" lss "0" (
  16. for /f "delims=-.:/\ tokens=1-2" %%i in ("%%a") do (
  17. set "str=%d%%%i月%%j日 %%c"
  18. )
  19.    ) else for /f "tokens=1-3 delims=:" %%i in ("%%i") do (
  20.                        if "%%k" == "" (set h=00:) else set "h="
  21.                        echo !h!%%c !str!
  22.                   )
  23.        )
复制代码
1

评分人数

TOP

本帖最后由 非常感谢 于 2013-9-27 15:14 编辑

回复 12# batman

本人都表达了完全是零基础,根本就看不懂代码,您说懒,懒是对有能力,而不去做的人吧,您说不爱动脑子,根本就没有思路,看不懂怎么修改代码。(输出少了00:,这个很容易在代码中加上的)这个对您来讲易如反掌,对我而言根本就不知道在哪里加和怎么加,百度了几个小时,没找到答案。两位版主的想法--我也不想去否定,只是每个人的立场不一样,我只能说您愿意帮就帮,不帮我也不说什么,如果您的批评对我有提高脚本知识的话,那我谢谢您!这个帖子没想到变的越来越奇怪了,,,学习是渐进的,对于刚学会爬的小孩,要求他走路或跑,不太适合,这是我的观点。学批处理我连爬也是刚开始,,,,,,,不多说了。

TOP

回复 10# terse
1.是当天的,txt里看了一下批处理前是1000多行,批处理后当然是几百行了。
2.为什么需要00:,因为当日合计后,对b.txt还需要提取无效号码,就是您以前给的批处理,如果不是这个格式00:00:00,无法提取无效号码。

TOP

赞成batman的说法,我想当初站长建立论坛旨在为批处理爱好者提供一个讨论的地方,而不是为有需求的人免费提供代码。如果你是批处理爱好者大家共同探讨我们都热烈欢迎,如果只是单纯要代码,请去隔壁『有偿求助区』发贴求助。

TOP

本帖最后由 batman 于 2013-9-27 13:09 编辑

我算是看透了你们这种不爱动脑子的伸手党。。。
输出少了00:,这个很容易在代码中加上的,但是按你原来的文本格式,这个有意义?
重定向到文本是批基础中的基础,你如果是头一两次发帖,你不会,我可以理解,发了这么多求助帖还不会,只说明了一个问题,你只要100%达到自己的要求,至于别人怎么实现你不管也不去想,更谈不上学习,只是在这里把自己当社会上的“甲”方看?
对不起,本人乐于助人,但不乐于助懒人,更不乐于助狂人。。。
2

评分人数

    • ivor: 版主我顶你技术 + 1
    • foxJL: 不乐于助懒人.赞同PB + 5
***共同提高***

TOP

返回列表