::zh159@bbs.cn-dos.net 2007-1-13
:: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=26508
@echo off
title 水产最低价^&最高价 zh159@bbs.cn-dos.net 2007-1-13
setlocal EnableDelayedExpansion
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
pause
exit
:Scan
set Min=M
set Max=0
for /f "tokens=1-4* delims==." %%i in ('set "%1"') 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 ('set "%1"') do if "%%k%%l" == "%Min%" echo 最低价: %%j %%k.%%l
for /f "tokens=1-4* delims==." %%i in ('set "%1"') do if "%%k%%l" == "%Max%" echo 最高价: %%j %%k.%%l
echo.------------------------------
goto :eof
@echo off
:: 缺点:生成临时文件,速度也较慢
:: Code by JM 2007-1-11 CMD@XP
:: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=26508
set num=0
md tmp 2>nul
setlocal enabledelayedexpansion
:: 按水产品类别建立临时文件
for /f "tokens=1-3" %%i in (a.txt) do (
set class1=!class2!
set class2=%%j
set price=%%k
if not defined class1 set /a num+=1&cd.>tmp\!num!.txt
if defined class1 if not "!class1!"=="!class2!" (
set /a num+=1&cd.>tmp\!num!.txt
echo !price:.=!☆ %%i %%j %%k>>tmp\!num!.txt
) else echo !price:.=!☆ %%i %%j %%k>>tmp\!num!.txt
)
set num=1
:loop
echo.
:: 获取最低价记录
set switch_sort=
set switch_class=
set switch_H_or_L=0
set price1=&set price2=
set H_or_L=最低价:
set str=[0-9][0-9]
for /l %%i in (1,1,3) do (
set str=!str![0-9]
if !switch_H_or_L! equ 0 call :sort_ !str!
)
:: 获取最高价记录
set switch_sort=/r
set switch_H_or_L=0
set price1=&set price2=
set H_or_L=最高价:
set str=[0-9][0-9][0-9][0-9][0-9][0-9]
for /l %%i in (1,1,3) do (
set str=!str:*]=!
if !switch_H_or_L! equ 0 call :sort_ !str!
)
echo ______________________________
set /a num+=1
if exist tmp\%num%.txt goto loop
endlocal
rd /q /s tmp
pause
goto :eof
:sort_
:: 按由高到低/由低到高排序
for /f "tokens=1-4" %%i in ('findstr "^%1☆" tmp\%num%.txt^|sort %switch_sort%') do (
set price1=!price2!
set price2=%%i
if not defined switch_class echo %%k:&echo.&set switch_class=1
if not defined price1 (echo %H_or_L% %%j %%l&set switch_H_or_L=1) else (
if "!price1!"=="!price2!" (
echo %H_or_L% %%j %%l
) else goto :eof
)
)
goto :eof
@echo off
:: 当最高价和最低价相同时,产地将指向同一个地方,而不管同样的价格有几个产地
:: 并且这个产地在表中位于这类产品的最后
:: Code by JM 2007-1-9 CMD@XP
:: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=26508
set max=1
set min=50000
setlocal enabledelayedexpansion
for /f "tokens=1-3" %%i in (a.txt) do (
set class1=!class2!
set class2=%%j&set price=%%k
set price=!price:.=!
if defined class1 if not "!class1!"=="!class2!" (
call :echo_
set max=1
set min=50000
)
if !price! geq !max! set max=!price!&set addr_max=%%i
if !price! leq !min! set min=!price!&set addr_min=%%i
)
call ::echo_
pause
goto :eof
:echo_
echo !class1!:
echo.
echo 最低价: !addr_min! !min:~0,-2!.!min:~-2!
echo 最高价: !addr_max! !max:~0,-2!.!max:~-2!
echo.
goto :eof
a.txt的内容如下:
城北回龙观 鲤鱼 6.20
北京岳各庄 鲤鱼 6.60
北京新发地 鲤鱼 6.80
北京八里桥 鲤鱼 7.30
石家庄桥西 鲤鱼 6.80
呼市东瓦窑 鲤鱼 7.60
包头市友谊 鲤鱼 7.60
鲁滨州六街 鲤鱼 7.60
山东威海 鲤鱼 9.00
合肥周谷堆 鲤鱼 5.50
赣九江浔阳 鲤鱼 8.60
鄂孝感南大 鲤鱼 5.00
湘长沙红星 鲤鱼 4.70
川成都禽蛋 鲤鱼 10.00
汉中过街楼 鲤鱼 6.60
新疆北园春 鲤鱼 6.00
秦皇岛海阳 鲤鱼 7.00
河北三河 鲤鱼 7.00
安徽舒城 鲤鱼 6.00
闽福鼎农贸 鲤鱼 12.00
鄂潜江江汉 鲤鱼 5.40
鄂洪湖农贸 鲤鱼 3.60
新疆伊犁 鲤鱼 7.00
城北回龙观 鲢鱼 3.60
北京岳各庄 鲢鱼 2.80
北京新发地 鲢鱼 3.80
北京八里桥 鲢鱼 4.30
呼市东瓦窑 鲢鱼 5.00
鲁滨州六街 鲢鱼 5.00
山东威海 鲢鱼 8.00
合肥周谷堆 鲢鱼 4.00
赣九江浔阳 鲢鱼 5.20
鄂孝感南大 鲢鱼 4.00
湘长沙红星 鲢鱼 4.30
汉中过街楼 鲢鱼 6.00
新疆北园春 鲢鱼 4.00
河北三河 鲢鱼 8.00
安徽舒城 鲢鱼 4.00
闽福鼎农贸 鲢鱼 19.00
福建龙岩 鲢鱼 8.60
鄂潜江江汉 鲢鱼 3.40
鄂洪湖农贸 鲢鱼 3.80
新疆伊犁 鲢鱼 5.00
城北回龙观 草鱼 8.20
北京岳各庄 草鱼 8.00
北京新发地 草鱼 7.60
北京八里桥 草鱼 9.00
呼市东瓦窑 草鱼 10.00
鲁滨州六街 草鱼 7.60
山东威海 草鱼 12.00
合肥周谷堆 草鱼 7.10
苏州南环桥 草鱼 9.00
赣九江浔阳 草鱼 8.00
鄂孝感南大 草鱼 7.80
湘长沙红星 草鱼 7.40
川成都禽蛋 草鱼 10.00
汉中过街楼 草鱼 6.80
新疆北园春 草鱼 10.00
河北三河 草鱼 8.00
闽福鼎农贸 草鱼 15.00
福建龙岩 草鱼 8.50
上饶农产品 草鱼 6.40
鄂潜江江汉 草鱼 7.20
鄂洪湖农贸 草鱼 5.60
陕西云阳 草鱼 9.00
城北回龙观 鲫鱼 6.50
北京岳各庄 鲫鱼 7.00
北京新发地 鲫鱼 8.00
北京八里桥 鲫鱼 8.00
石家庄桥西 鲫鱼 9.50
呼市东瓦窑 鲫鱼 7.60
包头市友谊 鲫鱼 9.00
鲁滨州六街 鲫鱼 8.00
山东威海 鲫鱼 12.00
合肥周谷堆 鲫鱼 5.80
苏州南环桥 鲫鱼 7.40
赣九江浔阳 鲫鱼 7.20
鄂孝感南大 鲫鱼 7.80
湘长沙红星 鲫鱼 6.50
汉中过街楼 鲫鱼 5.00
新疆北园春 鲫鱼 12.00
河北三河 鲫鱼 8.00
安徽舒城 鲫鱼 6.50
闽福鼎农贸 鲫鱼 36.00
鄂潜江江汉 鲫鱼 7.60
鄂洪湖农贸 鲫鱼 5.00
城北回龙观 带鱼 10.00
北京岳各庄 带鱼 10.00
北京八里桥 带鱼 11.50
石家庄桥西 带鱼 8.50
呼市东瓦窑 带鱼 9.60
包头市友谊 带鱼 30.00
青岛城阳 带鱼 10.00
山东威海 带鱼 15.00
河北三河 带鱼 11.00
闽福鼎农贸 带鱼 10.00
石家庄桥西 对虾 45.00
闽福鼎农贸 对虾 42.00
北京新发地 大带鱼 17.00
北京八里桥 大带鱼 14.00
晋大同振华 大带鱼 12.00
呼市东瓦窑 大带鱼 12.00
包头市友谊 大带鱼 32.00
合肥周谷堆 大带鱼 7.50
新疆伊犁 大带鱼 12.00
北京新发地 小带鱼 12.00
北京八里桥 小带鱼