China DOS Union

-- Unite DOS · Advance DOS · Grow DOS --

Union site: www.cn-dos.net Forum site: www.cn-dos.net/forum
DOS stands for freedom, openness and progress. Let us work hard, learn from the openness and GNU spirit of FreeDOS and Linux, and together build and grow a free GNU GPL world!

中国DOS联盟论坛
The time now is 2026-08-06 09:23
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [Help] How to query and output a section of data between 2 dates View 1,589 Replies 20
Original Poster Posted 2007-10-30 18:54 ·  中国 河南 郑州 联通
初级用户
Credits 30
Posts 13
Joined 2007-10-26 10:25
18-year member
UID 100817
Gender Male
Status Offline
As the title says
Please help me write it
Thanks!!!
Floor 2 Posted 2007-10-30 18:55 ·  中国 河南 郑州 联通
初级用户
Credits 30
Posts 13
Joined 2007-10-26 10:25
18-year member
UID 100817
Gender Male
Status Offline
For example, between October 1, 2007 and November 1, 2007
Floor 3 Posted 2007-10-30 19:57 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
Credits 1,436
Posts 739
Joined 2007-10-11 17:44
18-year member
UID 99469
Gender Male
Status Offline
Post a piece of text as an example first
Floor 4 Posted 2007-10-30 20:54 ·  中国 河南 郑州 联通
初级用户
Credits 30
Posts 13
Joined 2007-10-26 10:25
18-year member
UID 100817
Gender Male
Status Offline
Serial number Order User Production date Repair date Completion date
de23422 13321 Wang Xuebing June 18, 2006 March 28, 2007 April 10, 2007
fa22578 18032 Li Xue August 5, 2006 April 20, 2007 April 29, 2007
。。。。。
。。。。。
。。。。。
ke23089 52108 Zhao Guanghui January 5, 2007
le58212 32102 Zhang Yaofeng January 5, 2007 October 20, 2007 October 28, 2007


The format is like this, query the records between October 20, 2007 and April 20, 2007
Floor 5 Posted 2007-10-30 21:35 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
Credits 1,436
Posts 739
Joined 2007-10-11 17:44
18-year member
UID 99469
Gender Male
Status Offline
So it's judged by the "Repair date"
Floor 6 Posted 2007-10-30 21:48 ·  中国 河南 郑州 联通
初级用户
Credits 30
Posts 13
Joined 2007-10-26 10:25
18-year member
UID 100817
Gender Male
Status Offline
Yes, it's just that I can't figure out how to write this expression, hope everyone can give me some advice!!!
Floor 7 Posted 2007-10-30 23:53 ·  中国 湖南 娄底 电信
银牌会员
★★★
Credits 2,268
Posts 879
Joined 2006-12-19 16:23
19-year member
UID 73968
Gender Male
Status Offline

@echo off
echo Please enter the start date, for example:2007-3-29
set /p d=
echo Please enter the end date, for example: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
致精致简!
Floor 8 Posted 2007-10-31 00:55 ·  中国 浙江 杭州 电信
高级用户
★★
Credits 537
Posts 219
Joined 2007-08-04 09:43
19-year member
UID 94620
Gender Male
From 杭州--半山
Status Offline
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
Floor 9 Posted 2007-10-31 01:25 ·  中国 浙江 杭州 电信
高级用户
★★
Credits 537
Posts 219
Joined 2007-08-04 09:43
19-year member
UID 94620
Gender Male
From 杭州--半山
Status Offline
Not sure whether this can be written using only SED

[ Last edited by junchen2 on 2007-10-31 at 01:39 AM
Floor 10 Posted 2007-10-31 04:52 ·  中国 湖北 武汉 电信
版主
★★★★★
Credits 11,386
Posts 4,938
Joined 2006-07-23 17:10
20-year member
UID 59080
Status Offline
Try this:
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
Recent Ratings for This Post ( 1 in total) Click for details
RaterScoreTime
junchen2 +4 2007-10-31 08:42
Floor 11 Posted 2007-10-31 08:50 ·  中国 浙江 杭州 电信
高级用户
★★
Credits 537
Posts 219
Joined 2007-08-04 09:43
19-year member
UID 94620
Gender Male
From 杭州--半山
Status Offline
I tried brother lxmxn's code, and it works well. Thanks!

[ Last edited by junchen2 on 2007-10-31 at 08:52 AM
Floor 12 Posted 2007-10-31 10:02 ·  中国 河南 郑州 联通
初级用户
Credits 30
Posts 13
Joined 2007-10-26 10:25
18-year member
UID 100817
Gender Male
Status Offline
Many thanks, everyone :D
It's just that I can't understand the moderator's one :(
Floor 13 Posted 2007-10-31 10:32 ·  中国 河南 郑州 联通
初级用户
Credits 30
Posts 13
Joined 2007-10-26 10:25
18-year member
UID 100817
Gender Male
Status Offline
Originally posted by 26933062 at 2007-10-30 11:53 PM:

@echo off
echo Please enter the start date, for example:2007-3-29
set /p d=
echo Please enter the end date, for example:2007-4-29
set /p h=
set /p var=<a.txt
cls
echo %var%
setlocal EnableDelayedExpansion
...


Some records in the document have 3 dates, so the results it finds are a bit messed up :(

For example, if I query from 2006年10月20日 to 2007年8月20日, the result shows everything except the 3rd record
Floor 14 Posted 2007-10-31 11:10 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
Credits 1,436
Posts 739
Joined 2007-10-11 17:44
18-year member
UID 99469
Gender Male
Status Offline
What post #7 wrote has a problem

For example:
set a=2007-4-21
set b=2007-10-21
if %a% lss %b% (echo yes) else echo no
pause
Floor 15 Posted 2007-10-31 11:36 ·  中国 河南 郑州 联通
初级用户
Credits 30
Posts 13
Joined 2007-10-26 10:25
18-year member
UID 100817
Gender Male
Status Offline
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 /? says it is not an internal or external command...
What command is this?
This batch file gives no result on my machine :(
Forum Jump: