|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
|
2006-11-11 12:09 |
|
|
zh159
金牌会员
积分 3687
发帖 1467
注册 2005-8-8
状态 离线
|
|
2006-11-11 16:02 |
|
|
soker
初级用户
积分 30
发帖 15
注册 2005-8-13
状态 离线
|
|
2006-11-11 16:29 |
|
|
redtek
金牌会员
积分 2902
发帖 1147
注册 2006-9-21
状态 离线
|
『第
4 楼』:
欣赏啊~~超级亮点!!!
实现了中国第一个使用批处理脚本开发的公交线路信息查询系统~:)
[ Last edited by redtek on 2006-11-11 at 05:01 PM ]
|
Redtek,一个永远在网上流浪的人……
_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._ |
|
2006-11-11 16:58 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
5 楼』:
今天再次上火车网转了一下,发现各地的车次编号很有中国特色,并不是只有 数字 或 数字+字母 两种格式。以北京为例:有的是 “特8路外环”,有的是 “黄村←→向阳专线”,有的是 “917路专线(大学城)”……同一城市居然有三种以上的编号格式,看来我的代码还不能完全胜任如此复杂的类型匹配,请各位使用的时候,根据自己数据库里的车次编号格式,自行修改判断输入类型的语句。
我不知道国内的公交车次编号类型都有哪些格式,请热心人帮忙整理一下,不胜感激——要是公交车次编号和火车编号一样统一格式的话,那实在是太好了。据报载:成都的公交车次编号将在近期统一为 数字 的格式。这对于我的公交线路信息查询器来说,真是一个好消息,真希望各城市的公交车也是这样的状况。
[ Last edited by namejm on 2006-11-11 at 09:45 PM ]
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-11-11 21:35 |
|
|
ccwan
金牌会员
积分 2725
发帖 1160
注册 2006-9-23 来自 河北廊坊
状态 离线
|
『第
6 楼』:
敬爱的斑竹……!
|
三人行,必有吾师焉。 学然后知不足,教然后知困,然后能自强也。 |
|
2006-11-11 21:41 |
|
|
electronixtar
铂金会员
积分 7493
发帖 2672
注册 2005-9-2
状态 离线
|
『第
7 楼』:
强人~~拜~~~
|
C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>" |
|
2006-11-11 21:50 |
|
|
sd213637
初级用户
积分 42
发帖 16
注册 2006-11-4
状态 离线
|
|
2006-11-11 22:23 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
9 楼』:
顶楼的数据库是我按照《成都公交线路册》2006年版 手工录入的,没有上行和下行的区别;在火车网上下到了数据库文本,发现这里是分了上行和下行,并且上行和下行所经过的站点不太一致,有的是26个站点,有的是27个站点,这下就有点麻烦了。在我的印象中,只要是同一个车次,上行和下行所经过的站点是没有任何差别的。有懂其中奥妙的,请帮忙提供个比较权威的解释,3Q。
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2006-11-12 00:43 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
10 楼』:
Quote: | Originally posted by namejm at 2006-11-12 00:43:
顶楼的数据库是我按照《成都公交线路册》2006年版 手工录入的,没有上行和下行的区别;在火车网上下到了数据库文本,发现这里是分了上行和䠮.. |
|
这个上行和下行是走了一个环线
|
|
2006-11-12 05:15 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
11 楼』:
namejm 兄.我发个sed版的,看看还需要哪些改进
兰州公交车次查询.bat
@echo off
::定义数据库文件%life%
@set life=兰州公交线路.txt
:start
echo %~p0|find /i "Rar$">nul &&(echo 请把包内所有文件解压到文件夹下使用&pause>nul&goto :eof)
if not exist %life% (echo 错误,缺少数据库文件%life%&pause>nul&goto :eof)
del /f/q temp_?.txt>nul
title 兰州公交查询器 by:vkill
cls
echo.
echo ____请选择查询条件______________________________________________________________
echo.
echo a 按车次查询 b 按站点查询 c 按站-站查询
echo ________________________________________________________________________________
set cx_=
set /p cx_= 请输入操作代码:
for %%? in (a b c) do (if *%cx_%==*%%? goto cx_%%?)
goto start
::$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:cx_a
title 兰州公交查询器→按车次查询 by:vkill
cls
echo.
echo 例子:如查询7路,输入7即可
echo.
set cx_cc=
set /p cx_cc=请输入要查询的车次:
if *%cx_cc%==* goto cx_a
cd.>temp_0.txt
sed -n -e "/:%cx_cc%路/!d;p" -e "/:%cx_cc%路/n;p" -e h %life% |sed -e "/^ :/s/ :/车次→ /" -e "/^ :/!s/^ /线路→ /" |sed "n;G"|more>temp_0.txt
findstr . temp_0.txt>nul||(echo,&echo sorry,数据库中暂无此车次&pause>nul&goto start)
echo.
echo 你要查询的车次详情如下:
echo ________________________________________________________________________________
more<temp_0.txt
echo ________________________________________________________________________________
echo 按任意键退出......
pause>nul&goto start
::$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:cx_b
title 兰州公交查询器→按站点查询 by:vkill
cls
echo.
echo 例子:如输入 西关什字 查询
echo.
set cx_zd=
set /p cx_zd=请输入要查询的站点:
if *%cx_zd%==* goto cx_b
echo %cx_zd%|sed "s/[\x00-\x80]/,/" |findstr ",">nul&&(echo,&echo 错误,站点不是纯中文&pause>nul&goto cx_c)
::站-站查询时站1或站2为空
:*-*
cd.>temp_a.txt
cd.>temp_b.txt
sed -n -e "/ %cx_zd% /{x;1!p;g;p;}" -e h %life% |sed -e "/^ :/s/ :/车次→ /" -e "/^ :/!s/^ /线路→ /" |sed "n;G"|more>temp_a.txt
sed -n -e "/%cx_zd%/{x;1!p;g;p;}" -e h %life% |sed -e "/^ :/s/ :/车次→ /" -e "/^ :/!s/^ /线路→ /" |sed "n;G"|more>temp_b.txt
:匹配站点
findstr . temp_a.txt>nul ||(echo,&echo sorry,数据库中暂无完全匹配的此站点,2秒后显示类似的此站点&ping -n 3 127.1>nul&goto 类似站点)
echo.
echo 你要查询的站点(完全匹配的站点)详情如下:
echo ________________________________________________________________________________
more<temp_a.txt
echo ________________________________________________________________________________
echo 按任意键退出......
pause>nul&goto start
:类似站点
findstr . temp_b.txt>nul ||(echo,&echo sorry,数据库中暂无此站点,按任意键退出&pause>nul&goto start)
echo.
echo 你要查询的站点(类似的站点)详情如下:
echo ________________________________________________________________________________
more<temp_b.txt
echo ________________________________________________________________________________
echo 按任意键退出......
pause>nul&goto start
::$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
:cx_c
title 兰州公交查询器→按站-站查询 by:vkill
cls
echo.
echo 例子:如输入 西关什字-南关什字 查询
echo.
set cx_zz=
set /p cx_zz=请输入要查询的站-站:
if *%cx_zz%==* goto cx_c
echo.
echo %cx_zz: =%|sed "s/-//" |sed "s/[\x00-\x80]/,/" |findstr ",">nul&&(echo 错误,站点不是纯中文&pause>nul&goto cx_c)
for /f "tokens=1-2 delims=-" %%a in ('echo %cx_zz% ^|sed "s/ //g"') do (
if *%%a==* (echo 站1为空,2秒后转到单站点查询&ping -n 3 127.1>nul&set "cx_zd=%%b"&goto *-*) else (set "s=%%a")
if *%%b==* (echo 站2为空,2秒后转到单站点查询&ping -n 3 127.1>nul&set "cx_zd=%%a"&goto *-*) else (set "e=%%b")
)
cd.>temp_a.txt
cd.>temp_b.txt
::正序查找
sed -n -e "/%s%.*%e%/{x;1!p;g;p;}" -e h %life% |sed "s/.*%s%/ %s%/;s/%e%.*/%e%/" |sed -e "/^ :/s/ :/车次→ /" -e "/^ :/!s/^ /线路→ /" |sed "n;G"|more>temp_a.txt
::反序查找
sed -n -e "/%e%.*%s%/{x;1!p;g;p;}" -e h %life% |sed "s/.*%e%/ %e%/;s/%s%.*/%s%/" |sed -e "/^ :/s/ :/车次→ /" -e "/^ :/!s/^ /线路→ /" |sed "n;G"|more>temp_b.txt
:正序查找的站点
findstr . temp_a.txt>nul ||(echo,&echo sorry,数据库中暂无正序的%s%站-%e%站,2秒后显示反序的%s%站-%e%站&ping -n 3 127.1>nul&goto 反序查找的站点)
echo.
echo 你要查询的正序%s%站-%e%站详情如下:
echo ________________________________________________________________________________
more<temp_a.txt
echo ________________________________________________________________________________
echo 按任意键继续......
pause>nul
:反序查找的站点
findstr . temp_b.txt>nul ||(echo,&echo sorry,数据库中暂无反序的%s%站-%e%站,按任意键退出&pause>nul&goto start)
echo.
echo 你要查询的反序%s%站-%e%站详情如下:
echo ________________________________________________________________________________
more<temp_b.txt
echo ________________________________________________________________________________
echo 按任意键退出......
pause>nul&goto start
goto :eof update.bat
@echo off
set "life=兰州公交线路.txt"
echo %~p0|find /i "Rar$">nul &&(echo 请把包内所有文件解压到文件夹下使用&pause>nul&goto :eof)
::利用http://www.huoche.com.cn来更新
ping www.huoche.com.cn>nul ||(echo sorry,网络不通&pause>nul&goto :eof)
del /f/q *.htm*>nul
if exist %life% (copy %life% backup_%life%)
>%life% echo ;兰州公交室内线路车次表
>%life% echo.
echo 正在下载数据库,请稍候......
::兰州市区线路的页面地址为11346--11443
for /l %%a in (11346,1,11443) do (wget -q "http://www.huoche.com.cn/b%%a/")
::显示车次行和路线行|去行开头和结尾所有空格、移除标签|替换市区线路 为: ,去掉所属公交公司|开头结尾各加 ,换(为 ( ,)为 )|把共几站的空格去掉 |more写入新文件
sed -n -e "/<h2>.*<\/h2>/{p}" -e "/<h2>.*<\/h2>/{n;n;p}" *.htm* |sed -e "s/^[ \t]*//;s/[ \t]*$//" -e "s/<...>//g;s/<..>//g" |sed "s/市区线路 /:/" |sed "s/^/ /;s/$/ /;s/(/ ( /g;s/)/ ) /g" |sed "s/( 共/(共/;s/站 )/站)/"|more>%life%
del /f/q *.htm*
echo 更新完成,老的数据保存在了backup_%life%中&pause>nul
goto :rof 附件在下楼
|
|
2006-11-12 05:18 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
12 楼』:
....
解压两个包在一个目录使用
[ Last edited by vkill on 2006-11-12 at 05:21 AM ]
附件
1: 公交车次查询--例:兰州公交.rar (2006-11-12 05:18, 42.39 K, 下载附件所需积分 1 点
,下载次数: 150)
附件
2: wget.rar (2006-11-12 05:21, 268.83 K, 下载附件所需积分 1 点
,下载次数: 398)
|
|
2006-11-12 05:18 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
13 楼』:
其实不用手工去下的,完全可以p自动下载,呵呵~下载全国的都可以,原理上,我还没有下好p那
|
|
2006-11-12 05:57 |
|
|
jiesen
新手上路
晓枫
积分 15
发帖 8
注册 2006-11-12
状态 离线
|
『第
14 楼』:
厉害~!~!~! 还要多多学习
|
|
2006-11-12 06:00 |
|
|
ksuny
新手上路
积分 4
发帖 2
注册 2006-7-25
状态 离线
|
|
2006-11-12 06:25 |
|