中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 07:31
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]怎么查询并输出2个时间内的1段数据 查看 1,580 回复 20
楼 主 [求助]怎么查询并输出2个时间内的1段数据 发表于 2007-10-30 18:54 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
如题
请大家帮我写下
谢谢!!!
2 发表于 2007-10-30 18:55 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
比如 2007年10月1日 到 2007年11月1日之间
3 发表于 2007-10-30 19:57 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
贴段文本上来做范例吧
4 发表于 2007-10-30 20:54 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
序列号 订单 用户 出厂日期 维修日期 完结日期
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日 中间的记录
5 发表于 2007-10-30 21:35 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
就是根据“维修日期”来判断罗
6 发表于 2007-10-30 21:48 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
是的,只是这个表达式想不出该杂写,还望大家不吝赐教!!!
7 发表于 2007-10-30 23:53 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线

@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 ]
致精致简!
8 发表于 2007-10-31 00:55 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
19年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
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 ]
9 发表于 2007-10-31 01:25 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
19年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
不知道仅用SED能否写出

[ Last edited by junchen2 on 2007-10-31 at 01:39 AM ]
10 发表于 2007-10-31 04:52 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
试试这个:
sed "/^\(]\+]\+\)\{4\}2007年4月20.*/,/^\(]\+]\+\)\{4\}2007年10月20.*/!d" UrTestFile.txt|sed "1d;$d"


[ Last edited by lxmxn on 2007-10-31 at 04:55 AM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
junchen2 +4 2007-10-31 08:42
11 发表于 2007-10-31 08:50 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
19年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
用lxmxn兄的代码试了一下好用。谢谢!

[ Last edited by junchen2 on 2007-10-31 at 08:52 AM ]
12 发表于 2007-10-31 10:02 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
多谢大家:D
只是版主那个看不懂:(
13 发表于 2007-10-31 10:32 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
Originally posted by 26933062 at 2007-10-30 11:53 PM:

@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条都显示出来了
14 发表于 2007-10-31 11:10 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
7楼写的是有问题的

例如:
set a=2007-4-21
set b=2007-10-21
if %a% lss %b% (echo yes) else echo no
pause
15 发表于 2007-10-31 11:36 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
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 /? 提示不是内部或外部命令。。。
这个命令是什么?
这个批处理在我机器上无结果:(
论坛跳转: