中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]怎么查询并输出2个时间内的1段数据
« [1] [2] »
作者:
标题: [求助]怎么查询并输出2个时间内的1段数据 上一主题 | 下一主题
li104268
初级用户





积分 30
发帖 13
注册 2007-10-26
状态 离线
『楼 主』:  [求助]怎么查询并输出2个时间内的1段数据

如题
请大家帮我写下
谢谢!!!

2007-10-30 18:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
li104268
初级用户





积分 30
发帖 13
注册 2007-10-26
状态 离线
『第 2 楼』:  

比如 2007年10月1日  到   2007年11月1日之间

2007-10-30 18:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 3 楼』:  

贴段文本上来做范例吧

2007-10-30 19:57
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
li104268
初级用户





积分 30
发帖 13
注册 2007-10-26
状态 离线
『第 4 楼』:  

序列号     订单     用户        出厂日期               维修日期               完结日期      
de23422    13321    王学兵  2006年6月18日    2007年3月28日    2007年4月10日
fa22578    18032    李雪       2006年8月5日     2007年4月20日    2007年4月29日
。。。。。
。。。。。
。。。。。
ke23089    52108    赵广辉     2007年1月5日                                          
le58212    32102    张耀峰     2007年1月5日    2007年10月20    2007年10月28日


格式就是这样,查询 2007年10月20日 到 2007年4月20日 中间的记录

2007-10-30 20:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 5 楼』:  

就是根据“维修日期”来判断罗

2007-10-30 21:35
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
li104268
初级用户





积分 30
发帖 13
注册 2007-10-26
状态 离线
『第 6 楼』:  

是的,只是这个表达式想不出该杂写,还望大家不吝赐教!!!

2007-10-30 21:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 7 楼』:  


@echo off
echo 请输入起始日期 如:2007-3-29
set /p d=
echo 请输入结束日期 如:2007-4-29
set /p h=
set /p var=<a.txt
cls
echo %var%
setlocal EnableDelayedExpansion
for /f "delims=" %%i in (a.txt) do (
for /f "tokens=5 delims= " %%a in ("%%i") do (
  if not "%%a"=="" (
  set num=%%a
  set num=!num:年=-!
  set num=!num:月=-!
  set num=!num:日=!
  if !num! geq !d! if !num! leq !h! echo %%i
  )))
pause
[ Last edited by 26933062 on 2007-10-30 at 11:55 PM ]



致精致简!
2007-10-30 23:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 8 楼』:  

echo off
@for /f "tokens=1-6 delims=: " %%a in ('findstr /n " 2007年4月20日 " 111.txt') do (
if "%%f" == "2007年4月20日" set n=%%a& goto 2
)
:2
@for /f "tokens=1-6 delims=: " %%a in ('findstr /n " 2007年10月20 " 111.txt') do (
if "%%f" == "2007年10月20" set n1=%%a& goto 3
)
:3
sed -n "%n%,%n1%p" 111.txt|more>>fix_date.txt
pause

[ Last edited by junchen2 on 2007-10-31 at 01:07 AM ]

2007-10-31 00:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 9 楼』:  

不知道仅用SED能否写出

[ Last edited by junchen2 on 2007-10-31 at 01:39 AM ]

2007-10-31 01:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 10 楼』:  

试试这个:

  Quote:
sed "/^\([^[:space:]]\+[[:space:]]\+\)\{4\}2007年4月20.*/,/^\([^[:space:]]\+[[:space:]]\+\)\{4\}2007年10月20.*/!d" UrTestFile.txt|sed "1d;$d"

[ Last edited by lxmxn on 2007-10-31 at 04:55 AM ]

   此帖被 +4 点积分        点击查看详情   
评分人:【 junchen2 分数: +4  时间:2007-10-31 08:42


2007-10-31 04:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 11 楼』:  

用lxmxn兄的代码试了一下好用。谢谢!

[ Last edited by junchen2 on 2007-10-31 at 08:52 AM ]

2007-10-31 08:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
li104268
初级用户





积分 30
发帖 13
注册 2007-10-26
状态 离线
『第 12 楼』:  

多谢大家:D
只是版主那个看不懂:(

2007-10-31 10:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
li104268
初级用户





积分 30
发帖 13
注册 2007-10-26
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by 26933062 at 2007-10-30 11:53 PM:
[code]
@echo off
echo 请输入起始日期 如:2007-3-29
set /p d=
echo 请输入结束日期 如:2007-4-29
set /p h=
set /p var=<a.txt
cls
echo %var%
setlocal EnableDelayedExpansion
...

文档中某些记录有3个日期,因此查出来的结果有点乱:(

比如查2006年10月20日 到2007年8月20日,结果 除了第3条都显示出来了

2007-10-31 10:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 14 楼』:  

7楼写的是有问题的

例如:
set a=2007-4-21
set b=2007-10-21
if %a% lss %b% (echo yes) else echo no
pause


2007-10-31 11:10
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
li104268
初级用户





积分 30
发帖 13
注册 2007-10-26
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by junchen2 at 2007-10-31 12:55 AM:
echo off
@for /f "tokens=1-6 delims=: " %%a in ('findstr /n " 2007年4月20日 " 111.txt') do (
if "%%f" == "2007年4月20日" set n=%%a& goto 2
)
:2 ...

sed /? 提示不是内部或外部命令。。。
这个命令是什么?
这个批处理在我机器上无结果:(

2007-10-31 11:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: