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

【已解决】怎样对时间文本内容进行排序??

本帖最后由 ksla 于 2017-2-17 16:54 编辑

很久无上过来了,这次又遇到问题了,如果发帖格式不对,请管理人员指出!!谢谢

寻求大大帮个小忙!!非常感谢!!!

平时处理要一些txt文件,想通过  时间排序  对  文本内容   进行排列,以防重复再次看到相同内容!!

示例文本
未外理前:
1中国        中国数据        2017年2月19日8时9分47秒        http://aa.com
2美国        数据之家        2017年2月5日6时19分47秒        http://bb.com
3越南        越南之家        2017年2月18日16时5分47秒        http://cc.com
4法国        法国数据        2017年2月18日16时19分3秒        http://dd.com
5金月        金月数据        2017年2月5日16时19分47秒        http://ee.com
6哈哈        哈哈数据        2017年2月20日18时19分47秒        http://ff.com

处理后:
6哈哈        哈哈数据        2017年2月20日18时19分47秒        http://ff.com
1中国        中国数据        2017年2月19日8时9分47秒        http://aa.com
4法国        法国数据        2017年2月18日16时19分3秒        http://dd.com
3越南        越南之家        2017年2月18日16时5分47秒        http://cc.com
2美国        数据之家        2017年2月5日6时19分47秒        http://bb.com
5金月        金月数据        2017年2月5日16时19分47秒        http://ee.com

本帖最后由 CrLf 于 2017-2-17 17:00 编辑
  1. 1>1/* :
  2. @echo off
  3. cscript /nologo /e:jscript "%~0" <测试.txt >排序.txt
  4. pause & exit /b
  5. */
  6. var text = WSH.StdIn.ReadAll()
  7. var arr=[];
  8. text.replace(
  9. /.+? +(\d+)年(\d+)月(\d+)日(\d+)时(\d+)分(\d+)秒.+/mg,
  10. function($0,Y,m,d,H,M,S){
  11. arr.push({dt:new Date(Y+'/'+m+'/'+d+' '+H+':'+M+':'+S),str:$0})
  12. }
  13. )
  14. arr = arr.sort(function(a,b){return a.dt-b.dt})
  15. for(var i in arr){
  16. WSH.Echo(arr[i].str)
  17. }
复制代码

TOP

回复 2# CrLf


    谢谢你的救助!!

我提示了以下错误!!
CScript 错误: 无法找到脚本“e:\cscript\1.bat”的脚本引擎“cscript”。

我电脑无有e盘,我将它修改成  cscript /nologo /d:cscript "%~0" <测试.txt >排序.txt   就出现以下错误!!
输入错误: 指定了未知的选项“/d:cscript”。

我尝试过百度,但无果!!

TOP

回复 2# CrLf


    {:3_63:} 大哥,,出来帮帮忙!!

TOP

/e:cscript”改为“/e:jscript
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

回复 5# 回家路上


    C:\Users\89054\Desktop\新建文件夹 (8)\1.bat(1, 6) Microsoft JScript 编译错误: 条件编译已关闭
提示这个错误!~!

TOP

  1. @set @n=0;/* & echo off
  2. pushd %~dp0
  3. cscript /nologo /e:jscript "%~0" <测试.txt >排序.txt
  4. pause & exit /b
  5. */
  6. var text = WSH.StdIn.ReadAll()
  7. var arr=[];
  8. text.replace(
  9. /.+? +(\d+)年(\d+)月(\d+)日(\d+)时(\d+)分(\d+)秒.+/mg,
  10. function($0,Y,m,d,H,M,S){
  11. arr.push({dt:new Date(Y+'/'+m+'/'+d+' '+H+':'+M+':'+S),str:$0})
  12. }
  13. )
  14. arr = arr.sort(function(a,b){return b.dt-a.dt})
  15. for(var i in arr){
  16. WSH.Echo(arr[i].str)
  17. }
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 7# yu2n


    非常感谢!!

TOP

回复 2# CrLf


    谢谢你!!

TOP

竟然两处笔误...已修改

TOP

回复 10# CrLf


    你好,,我在有偿求助区发帖子了。。能否再写一次,,我会给佣金的

TOP

估计不会有人给你写了。。

TOP

回复 12# zz100001


    有吖,,好心人还是好多的!!

TOP

本帖最后由 523066680 于 2017-2-17 17:45 编辑
  1. use Encode;
  2. open READ, "<:encoding(gbk)", "src.txt";
  3. my %hash;
  4. for my $e ( <READ> )
  5. {
  6.     $e=~s/\r?\n$//;
  7.     if ($e=~/(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}(\d+)\p{han}/)
  8.     {
  9.         $t = sprintf("%d%02d%02d%02d%02d%02d", $1, $2, $3, $4, $5, $6 );
  10.         $hash{ $t } = $e;
  11.     }
  12. }
  13. close READ;
  14. grep { print encode('gbk', $hash{$_}),"\n" } ( sort keys %hash );
复制代码
假设时间不重复~  假设文本为GBK

TOP

回复 14# 523066680


    谢谢!!

TOP

返回列表