中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用批处理列举水产品的最低、最高价
« [1] [2] »
作者:
标题: 用批处理列举水产品的最低、最高价 上一主题 | 下一主题
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 16 楼』:  

  13楼和15楼的代码思路确实不错。但是在 for 语句中使用管道会使速度降低不少,15楼抛弃了管道操作,速度马上上去了。

  本来想发一段在13楼的基础上修正的代码,速度控制在15S以内,不过比起15楼的速度,还是稍微慢了点,就不发了。加分。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-14 01:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 17 楼』:  

以下两个都产生临时文件
(里面加上了计时代码,可以自己对比所用时间,实际使用去掉)
“最低价:  %%j        %%k.%%l”中间用TAB制表符间隔“%%j”“%%k”

最快速度(仅限LZ提供的文件):
::zh159@bbs.cn-dos.net 2007-1-15
@echo off
title 水产最低价^&最高价  zh159@bbs.cn-dos.net  2007-1-15
setlocal EnableDelayedExpansion
:loop
set time1=%time%
if not "%time1:~-2%" == "00" goto loop
for /f "tokens=1-3*" %%i in (a.txt) do set %%j.%%i.%%k=.
for /f "tokens=1-3*" %%i in (a.txt) do if not "%%j" == "!Type!" set Type=%%j&&call :Scan %%j
del list.txt
echo %time1%
echo %time%
pause
exit

:Scan
set "%1">list.txt
set Min=M
set Max=0
for /f "tokens=1-4* delims==." %%i in (list.txt) do (
  if %%k%%l LEQ !Min! set Min=%%k%%l
  if %%k%%l GEQ !Max! set Max=%%k%%l
)
echo %1:
echo.
for /f "tokens=1-4* delims==." %%i in (list.txt) do if "%%k%%l" == "%Min%" echo   最低价:  %%j        %%k.%%l
for /f "tokens=1-4* delims==." %%i in (list.txt) do if "%%k%%l" == "%Max%" echo   最高价:  %%j        %%k.%%l
echo.------------------------------
goto :eof
最少变量:
::zh159@bbs.cn-dos.net 2007-1-15
@echo off
title 水产最低价^&最高价  zh159@bbs.cn-dos.net  2007-1-15
setlocal EnableDelayedExpansion
:loop
set time1=%time%
if not "%time1:~-2%" == "00" goto loop
for /f "tokens=1-3*" %%i in (a.txt) do if not "%%j" == "!Type!" set Type=%%j&&call :Scan %%j
del list.txt
echo %time1%
echo %time%
pause
exit

:Scan
cd.>list.txt
for /f "tokens=1-4* delims=. " %%i in (a.txt) do if "%%j" == "%1" >>list.txt echo %%i %%k %%l
set Min=M
set Max=0
for /f "tokens=1-4*" %%i in (list.txt) do (
  if %%j%%k LEQ !Min! set Min=%%j%%k
  if %%j%%k GEQ !Max! set Max=%%j%%k
)
echo %1:
echo.
for /f "tokens=1-4*" %%i in (list.txt) do if "%%j%%k" == "%Min%" echo   最低价:  %%i        %%j.%%k
for /f "tokens=1-4*" %%i in (list.txt) do if "%%j%%k" == "%Max%" echo   最高价:  %%i        %%j.%%k
echo.------------------------------
goto :eof


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


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



论坛跳转: