中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 07:34
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]怎么查询并输出2个时间内的1段数据 查看 1,581 回复 20
16 发表于 2007-10-31 12:26 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
sed是第三方命令行工具

需要下载的,论坛似乎是有的,楼主自己搜索一下
17 发表于 2007-10-31 12:55 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
Originally posted by abcd at 2007-10-31 12:26 PM:
sed是第三方命令行工具

需要下载的,论坛似乎是有的,楼主自己搜索一下

知道了,谢谢你提醒

我想知道能不能不借住第三方工具把它作出来
18 发表于 2007-10-31 13:30 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
当然是可以实现的,不过效率很明显没有sed高的

有时候不要这么执着于非用windows自带命令不可

处理文本不就是为了效率吗?

如果纯研究的话,倒是可以去写,如果只是单纯的提高处理文本的速度的话

不妨考虑第三方工具
19 发表于 2007-10-31 14:25 ·  中国 河南 郑州 联通
初级用户
积分 30
发帖 13
注册 2007-10-26 10:25
18年会员
UID 100817
性别 男
状态 离线
Originally posted by abcd at 2007-10-31 01:30 PM:
当然是可以实现的,不过效率很明显没有sed高的

有时候不要这么执着于非用windows自带命令不可

处理文本不就是为了效率吗?

如果纯研究的话, ...


1为处理文档,2位学习。学习一下高人的逻辑思维,提高自己能力:P
希望有人帮写出纯ms-dos代码:)
20 发表于 2007-10-31 14:58 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
@echo off

for /f "skip=1 tokens=1-6" %%i in (t.txt) do (
set dt=%%m
setlocal enabledelayedexpansion
set dt=!dt:年= !
set dt=!dt:月= !
set dt=!dt:日=!
call :ys "!dt!"
if "!string:~1!" gtr "2007-04-20" if "!string:~1!" lss "2007-10-20" echo %%i %%j %%k %%l %%m %%n
endlocal
)
pause
goto :eof

:ys
set string=
for %%a in (%~1) do (
if %%a leq 9 (set str=0%%a) else (set str=%%a)
set string=!string!-!str!
)


试试这个??
21 发表于 2007-10-31 17:20 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
19年会员
UID 73968
性别 男
状态 离线
这样就可以了
::

@echo off
setlocal EnableDelayedExpansion
echo 请输入起始日期 如:2007 3 29
set /p d=
call :lis "%d%" d
echo 请输入结束日期 如:2007 10 9
set /p h=
call :lis "%h%" h
set /p var=<a.txt
cls
echo %var%
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:日=!
call :lis "!num!" num
if !num! geq !d! if !num! leq !h! echo %%i
)))
pause
exit
:lis
for /f "tokens=1-3 delims=- " %%a in ("%~1") do (
set m=0%%b
set yy=0%%c
set %2=%%a-!m:~-2!-!yy:~-2!
)
goto :eof
致精致简!
论坛跳转: