Board logo

标题: [原创+测试]公交线路信息查询器[2006-11-10] [打印本页]

作者: namejm     时间: 2006-11-11 12:09    标题: [原创+测试]公交线路信息查询器[2006-11-10]

  在 [共同参与][挑战思路][批处理:轻松译单词]这个帖子的讨论过程中,我曾提出:借鉴33F的思路,可以做出 公交信息查询器 之类的东西(请看34F的帖子)。

  在提出设想的当天,写下了这个脚本的雏形;在此后将近一个月的时间里,诸事缠身,代码一直在断断续续的编写之中。昨天抽空把代码梳理了一下,把初步的代码发在DOS联盟脚本技术群里,收到了联盟里几位热心会员的反馈。今天再次梳理代码,增添了点功能,发出来请各位测试。
  (提示:若以下提到的功能在这个脚本中得不到反映,则表明这些功能是后续版本的努力方向;若各位有什么好想法,请跟帖发表建议,3Q)

  代码:
@echo off
title 公交线路信息查询器-test
setlocal enabledelayedexpansion
goto begin

功能:
  ① 输入线路名称,显示该线路的所有站点及发车收车时间;
  ② 输入上车站点和下车站点,显示可直达的车次,并显示每条线路中这两个站点及其之间的所有站点及发车收车时间;
  ③ 可查询换乘线路

流程:
  1、输入查询对象;
    2、判断输入类型:若为数字、数字+字母,则查询车次;若带汉字,则查询站点信息;
  3、若查询车次,有则显示,无则提示重新查询;
  4、若查询站点,首先检测是否存在此站点;若不存在,则提示换用近似的站点查询;若存在该站点,有直达则只显示直达,无直达则提示查询换乘;若无换乘,则提示重新查

询,此时罗列近似的起止站点供选择;

code by JM 2006-10-17~11-10   CMD@XP

:begin
cls
set input=
set /p input=请输入车次或上、下车站点:
:: 车次只允许输入数字或数字+字母,否则会认为是站点
echo %input%|findstr /r "^[0-9][0-9]*[a-zA-Z]*$">nul &&(
    call :get_line %input%
    echo !num!
    echo !_time!
    echo !line_info:~1,-1!
    goto end
)
call :find_station %input%

rem ========== 查询车次编号匹配的线路信息 ==========

:get_line
:: 获取要查询的车次编号所在的行
cls
set line=
for /f "tokens=1* delims=:" %%i in ('findstr /nr "^%1路:$" 公交线路.txt') do (
    set line=%%i
    if not "!line!"=="" goto get_block
)
goto no-item

rem ========== 查询直达方案 ==========

:find_station
:: 只允许同时输入两个站点
if "%2"=="" goto begin
if not "%3"=="" goto begin
find "-%1-" 公交线路.txt>nul||goto no-start
find "-%2-" 公交线路.txt>nul||goto no-end
cls
set line=
set str=
set var=
for /f "tokens=1* delims=:" %%i in ('findstr /n "\-%1\-" 公交线路.txt') do (
    set line=%%i
    set str=%%j
    set str=!str:-%2-=!
    if not "!str!"=="%%j" (
        set var=%%j
        set var=!var:-%1-=-☆%1☆-!
        set var=!var:-%2-=-☆%2☆-!
        call :pick-up %input% !var!
        call :type_nostop
    )
)
:: 如果没找到直达线路,则查询换乘方案
if "%var%"=="" call :transfer %input%

:end
pause
goto begin

rem ========== 查询换乘方案 ==========

:: 换乘线路只能查到匹配的第一条,可能不是最短线路
:transfer
set first_line=
set first_id=
set first_time=
set second_line=
set second_id=
set second_time=
set link=
for /f "tokens=1* delims=:" %%i in ('findstr /n "\-%1\-" 公交线路.txt') do (
    set first_line=%%i&set str_start=%%j
    set stations_start=!str_start:-= !
    for /f "tokens=1* delims=:" %%k in ('findstr /n "\-%2\-" 公交线路.txt') do (
        set second_line=%%k&set str_end=%%l
        set stations_end=!str_end:-= !
        for %%m in (!stations_start!) do (
            for %%n in (!stations_end!) do (
                if "%%m"=="%%n" (
                    set link=%%m
                    set /a line=!first_line!-2&&call :get_block
                    set first_id=!num!
                    set first_time=!_time!
                    set /a line=!second_line!-2&&call :get_block
                    set second_id=!num!
                    set second_time=!_time!
                    goto type_change
                )
            )
        )
    )
)
if "%link%"=="" goto no-change


rem ━━━━━━━━━━━ 子过程 ━━━━━━━━━━━

rem ========== 获取某条线路的完整信息 ==========
:get_block
set /a line-=1
set count=
for /f "skip=%line%" %%i in (公交线路.txt) do (
    set /a count+=1
    if !count! equ 1 set num=%%i
    if !count! equ 2 set _time=%%i
    if !count! equ 3 set line_info=%%i
    if !count! gtr 3 goto :eof
)

rem ========== 提取上车站点到下车站点之间的所有站点 ==========
:pick-up
for /f "tokens=2-4 delims=☆" %%i in ("%3") do set var=%%i%%j%%k
:: 判断输入的起止点在 公交线路.txt 中的先后顺序
:: 以决定是否逆向显示相关信息
for /f "tokens=1 delims=-" %%i in ("!var!") do if "%%i"=="%2" call :reverse
goto :eof

rem ========== 显示直达方案信息 ==========

:type_nostop
set /a line-=2
call :get_block
echo 乘坐 %num:~0,-2% 路车(%_time%):%var%
echo.
goto :eof

rem ========== 显示换乘方案信息 ==========
:type_change
echo 交汇点是 %link%
echo.
set str_start=!str_start:-%1-=-☆%1☆-!
set str_start=!str_start:-%link%-=-☆%link%☆-!
echo 先搭乘 %first_id:~0,-2% 路在 %link% 站下车,然后换乘 %second_id:~0,-2% 路即可,换乘方案为:
echo.
call :pick-up %1 %link% %str_start%
echo %first_id:~0,-2%路(%first_time%): %var%
set str_end=!str_end:-%2-=-☆%2☆-!
set str_end=!str_end:-%link%-=-☆%link%☆-!
echo.
call :pick-up %1 %2 %str_end%
echo %second_id:~0,-2%路(%second_time%): %var%
echo _____________________________________________________________
goto :eof

rem ========== 逆向显示站点信息 ==========
:reverse
set var=%var:-= %
set str=
for %%i in (%var%) do set str=%%i-!str!
set var=%str:~0,-1%
goto :eof



rem ━━━━━━━━━━━ 出错信息 ━━━━━━━━━━━

:no-start
cls
echo 没有找到名为 "%1" 的上车站点
pause
goto begin

:no-end
cls
echo 没有找到名为 "%2" 的下车站点
pause
goto begin

:no-change
echo 没有找到直达线路,也找不到只转一次车的换乘方案
pause
goto begin

:no-item
echo 没有找到车次编号为 "%input%" 的相关信息,请重新查阅.
pause
goto begin
  公交线路.txt
线路信息格式为:
  ① 文本正文首行不能为线路信息,可以设为空,或其他内容;
  ②  每条线路第一行为线路编号,格式为"数字+路:"(如11路:)或 数字+字母+路:(如503A路:),必须是中文半角状态下的冒号;第二行为发、收车时间;第三行为经过的站点,每个站点用短横线括起来,(如:-川大-电子科大-);
    ③  每条线路的信息块之间只能用空行分隔,或者不分隔;
  ④  除了站点、时间之间用-分隔之外,其他行不能再出现-;

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1路:
6:00-23:00
-青龙场中心站-昭觉寺横街-洪家坡-驷马桥-高笋桥-解放路一段-梁家巷-好又多府河店-北大街-中西顺城街-盐市口-红照壁-南大街-浆洗街-南郊路-武侯祠-高升桥-高升桥路中段-佳灵路-川藏路高新路口-太平园-八一家具城-

2路:
5:45-22:30
-火车北站-荷花池-高笋塘-二环路北四段-二环路东一段北-二环路东一段中-二环路东一段南-麻石桥-二环路东三段中-万年场-双林中横路-双桥子-塔子山-五桂桥-

3路:
6:15-23:00
-桦林园-红砖桥-沙河大桥-东光小区-二环路东五段-三官堂-顺江路-九眼桥-牛王庙-水碾河-东风大桥-大慈寺路-总府路东-文化宫-太升路口-青羊二医院-江汉路东-江汉路西-通锦桥-沙湾路-会展中心-西南交大-交大路西-香榭里-九里堤公交总站-

城乡3路:
6:30-18:30
-大丰镇-古柏树村五组-古柏树村四组-川建社区-陆家工业区-幸福村-园艺场-王贾村-九里店-八里桥-双水村-双水碾村-荆竹村-川陕路口-昭觉寺-青龙场-省粮校-省政法学院-成绵立交桥-龙潭立交桥-丛树林-十陵客运站-

4路:
5:50-23:00
-五桂桥-双桥子-水碾河-东风大桥-大慈寺路-总府路东-总府路-人民西路-东城根上街-羊市街-西大街-西月城街-花牌坊街-西门车站-营门口立交桥-五里村-茶店子-茶店子西-三环路成灌路立交桥南-茶店子公交站-
  可供参考的数据库文本内容可以在这里下载:火车网,感谢 vkill 提供。
作者: zh159     时间: 2006-11-11 16:02
强!

正在下载公交线路ing
作者: soker     时间: 2006-11-11 16:29
厉害。。。实在佩服。。。
作者: redtek     时间: 2006-11-11 16:58
欣赏啊~~超级亮点!!!
实现了中国第一个使用批处理脚本开发的公交线路信息查询系统~:)

[ Last edited by redtek on 2006-11-11 at 05:01 PM ]
作者: namejm     时间: 2006-11-11 21:35
  今天再次上火车网转了一下,发现各地的车次编号很有中国特色,并不是只有 数字 或 数字+字母 两种格式。以北京为例:有的是 “特8路外环”,有的是 “黄村←→向阳专线”,有的是 “917路专线(大学城)”……同一城市居然有三种以上的编号格式,看来我的代码还不能完全胜任如此复杂的类型匹配,请各位使用的时候,根据自己数据库里的车次编号格式,自行修改判断输入类型的语句。

  我不知道国内的公交车次编号类型都有哪些格式,请热心人帮忙整理一下,不胜感激——要是公交车次编号和火车编号一样统一格式的话,那实在是太好了。据报载:成都的公交车次编号将在近期统一为 数字 的格式。这对于我的公交线路信息查询器来说,真是一个好消息,真希望各城市的公交车也是这样的状况。

[ Last edited by namejm on 2006-11-11 at 09:45 PM ]
作者: ccwan     时间: 2006-11-11 21:41
敬爱的斑竹……!
作者: electronixtar     时间: 2006-11-11 21:50
强人~~拜~~~
作者: sd213637     时间: 2006-11-11 22:23
不是一般的牛~!
作者: namejm     时间: 2006-11-12 00:43
  顶楼的数据库是我按照《成都公交线路册》2006年版 手工录入的,没有上行和下行的区别;在火车网上下到了数据库文本,发现这里是分了上行和下行,并且上行和下行所经过的站点不太一致,有的是26个站点,有的是27个站点,这下就有点麻烦了。在我的印象中,只要是同一个车次,上行和下行所经过的站点是没有任何差别的。有懂其中奥妙的,请帮忙提供个比较权威的解释,3Q。
作者: vkill     时间: 2006-11-12 05:15


  Quote:
Originally posted by namejm at 2006-11-12 00:43:
  顶楼的数据库是我按照《成都公交线路册》2006年版 手工录入的,没有上行和下行的区别;在火车网上下到了数据库文本,发现这里是分了上行和䠮..

这个上行和下行是走了一个环线
作者: vkill     时间: 2006-11-12 05:18
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
附件在下楼
作者: vkill     时间: 2006-11-12 05:18    标题: ....

解压两个包在一个目录使用

[ 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)

作者: vkill     时间: 2006-11-12 05:57
其实不用手工去下的,完全可以p自动下载,呵呵~下载全国的都可以,原理上,我还没有下好p那
作者: jiesen     时间: 2006-11-12 06:00
厉害~!~!~!  还要多多学习
作者: ksuny     时间: 2006-11-12 06:25
爆强
作者: vkill     时间: 2006-11-12 06:59
我的是一个晚上写的,难免功能不全,回去好好研究下namejm 胸3写的
作者: shikx2008     时间: 2006-11-15 00:03
厉害顶
作者: NaturalJ0     时间: 2006-11-15 02:58
o_O 又强又实用。
作者: xsjlai     时间: 2006-11-16 03:54
好东东!谢谢无私分享!版主辛苦了!
作者: denghaian     时间: 2007-3-11 14:27
汗颜
作者: ieutk     时间: 2007-3-12 01:37
楼主果断厉害啊,下过去研究研究!
作者: hxmupdata     时间: 2007-3-12 01:47
昨天做公交车时候想搞一个。。。。。发现有人做了。。。。。。。。下载了欣赏。。。
作者: jackyggt     时间: 2007-3-13 08:44

作者: xiaoshuq     时间: 2007-3-13 09:51    标题: 不是一般的强

如题
作者: everest79     时间: 2007-3-13 15:41
vkill是甘肃的吗?我也是哦
作者: vkill     时间: 2007-3-14 01:55


  Quote:
Originally posted by everest79 at 2007-3-13 15:41:
vkill是甘肃的吗?我也是哦

vkill
金牌会员





积分 2742
发帖 1202
注册 2006-1-20
来自 甘肃.临泽
状态 在线
作者: mmsoft     时间: 2007-3-14 02:33
厉害~~,向高手学习!
作者: everest79     时间: 2007-3-14 10:02


  Quote:
Originally posted by vkill at 2007-3-13 12:55 PM:

vkill
金牌会员





积分 2742
发帖 1202
注册 2006-1-20
来自 甘肃.临泽
状态 在线

分比我高也不用打击俺吗,我是陇南的
作者: vkill     时间: 2007-3-14 11:12


  Quote:
Originally posted by everest79 at 2007-3-14 10:02:


分比我高也不用打击俺吗,我是陇南的

倒,谁打击你了啊~我只是想说我写的很清楚的啊
作者: everest79     时间: 2007-3-14 13:17
我基本上都没注意过,看到你回贴才想到,也没看,就直接问了,嘿嘿
作者: gfanny     时间: 2007-3-21 05:41
太强了,学习一下。
作者: kkoper     时间: 2007-3-25 11:47
西部口了~~ 佩服着
作者: skyskysky99     时间: 2007-9-21 10:49
下来看看
作者: luhuiye     时间: 2007-9-21 11:08
无语! 敬业精神可嘉
作者: movy     时间: 2007-9-21 12:14
高手杰作,顶一个!
作者: npgmis     时间: 2007-9-21 15:31
这样也行
作者: yoyodos     时间: 2007-9-22 00:01
什么都能用bat写,哈,真是很有信心啊,
作者: cixitkd     时间: 2007-10-31 21:04
是很强哦
作者: zsj008od     时间: 2008-3-19 20:58
^_^,上面兄弟用到sed了,这个很强大的啊
作者: zsx199709     时间: 2009-2-2 19:02
好贴

我还修改了一下。

公交线路.txt
线路信息格式为:
  ① 文本正文首行不能为线路信息,可以设为空,或其他内容;
  ②  每条线路第一行为线路编号,格式为"数字+路:"(如11路:)或 数字+字母+路:(如841z路:),必须是中文半角状态下的冒号;第二行为经过的站点,每个站点用箭头(→)括起来,(如:桃园路口→汾东公寓);
    ③  每条线路的信息块之间只能用空行分隔,或者不分隔;
  ④  除了站点之间用箭头(→)分隔之外,其他行不能再出现箭头(→)。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1路:
下元→千峰路口→理工大学→迎泽桥西→迎泽桥东→省人大→新建路口→大南门→青年路口→并州饭店→广场→火车站

2路:
胜利桥东→新建北口→胜利街西口→工具厂→胜利街→矿机→沙河→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟→十三冶二中→光社→光社北→东方机械厂→新华化工厂→兴安宾馆→南寨→西留庄→北下温→向阳店

2z路:
胜利桥东→新建北口→胜利街西口→工具厂→胜利街→矿机→沙河→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟(恒山路)→十三冶二中→光社→光社北→东方机械厂→新华化工厂→兴安宾馆→南寨→二电厂→西留庄→江阳化工厂

3路:
杏花实验中学→富康苑小区→肿瘤医院→职工新村→小东门→招呼站→军区→山大二院→五一小学→桥头街→五一大楼→并州饭店→青年路口→少年宫→山大一院→体育馆→公交总公司→省林科所→财大北校→市人大→雅阁瑞普广场

4路:
体育馆→山大一院→少年宫→大南门→宽银幕→西羊市→西羊市口→市政府→府西西口→府西街→省政府→柳北→五一小学→桥头街→五一大楼→广场→并西商场→塑料公司→山西报社→大营盘→体育路口→菜园村→财大北校→省林科所→公交总公司→体育馆

5路:
下元→三益公司→太纺宿舍西→太纺→沙沟→省建六公司→义井北→招呼站→义井→十六中→北堰→制药厂→化工厂→董茹→金胜→一电厂→化肥厂→太化俱乐部→太化二中→罗城

6路:
小东流→招呼站→晋机→西宫→省电大→兴华南小区→招呼站→华宇购物广场→漪汾小区→漪汾桥西→桃园一巷→桃园二巷→桃园四巷→汾东公寓→省人大→新建路口→大南门→青年路口→并州饭店→火车站

7路:
下元→重机宿舍→铁十二局→闫家沟→瓦流路口→九州停车场→结核病医院→机修厂宿舍→南寒→148队→北寒→西局医院→太白巷→河涝湾商场→河涝湾→西局二中→桃杏村→菜市场→五四街→白矿俱乐部→五三街→解放街→红楼站→南坑→九院→官地广场

9路:
火车站→十四中→大东关→小东门→赛马场→剪子湾→剪子湾东口→轻工学校→零五站→下庄→杨家峪

10路:
小东流→招呼站→晋机→西流村→西宫→省电大→兴华小区→冶金电机厂→胜利桥西→胜利桥东→新建北口→柳溪街口→旱西门→府西西口→府西街→省政府→柳北→柳巷→柳南→青年路口→并州饭店→广场→火车站

11路:
火车站→广场→并西商场→塑料公司→山西报社→大营盘→二营盘→狄村街西口→建南汽车站→狄村→东太堡→长风街东口→许坦北→许西→北营火车站→山针→北营

12路:
下元→下元商场→重机技校→省建机厂→彭村→西宫→晋机→小东流→安广小区→气管厂→三给村→选煤厂→摄乐村→营村招呼站→芮城→柴村

13路:
体育馆→传染病院→省林科所→财大北校→休干所→平阳路西二巷→水总→杨家堡→棉毛厂→田森超市→学府街西口→高新区西口→大马→殷家堡→小马→红寺村→嘉节→畜研所→轴承厂→小店→小店区人大

15路:
胜利桥东→程家村→古城招呼站→赵庄→下兰村→二巷西口→太钢医院→迎新商场→南寨办事处→迎新西一巷→北固碾→石英沙厂→南下温→西留庄→北下温→向阳店→向阳店北→南翟村→横渠→横渠西→西村→西村西→兰村→兰村西→中北大学

16路:
下元→铁道大厦→建安处→金阳路口→铁十二局医院→南寒广场→机修厂宿舍→南寒→148队→北寒→西矿建北宿舍→招呼站→西铭中学→西铭→三岔口→管理站→支架厂→收费站→斜坡

17路:
下元→重机宿舍→铁十二局→闫家沟→瓦流路口→九州停车场→结核病医院→机修厂宿舍→南寒→148队→北寒→西局医院→太白巷→河涝湾商场→河涝湾→电车站→虎胜街→大虎峪→桃园→招呼站→小虎峪→杜儿坪俱乐部→三岔口→杜儿坪

18路:
下元→重机宿舍→铁十二局→闫家沟→瓦流路口→瓦流村→重机学院→线材厂→东社村→玻璃钢厂→袁家庄→上庄→石渣厂

19路:
松庄→经园路口→朝阳街→镇政府→服装城→新郝庄→火车站南→火车站→十四中→铁路医院→五一小学→柳北→省政府→府西街→府西西口→旱西关→金刚里→柳溪街→北大街→胜利桥东→胜利桥西→冶金电机厂→兴华小区→省电大→小区中段→兴华北小区

21路:
高新开发区→管委会→高新区西口→学府街西口→田森超市→棉毛厂→杨家堡→亲贤北街西口→山大成教院→长治路口→王村南街→寇庄→菜园村→体育馆→山西报社→省人民医院→双东东口→并东东口→五一商厦→火车站

23路:
火车站→五一商厦→并东东口→双东东口→南内环东口→山姆士超市→五一机器厂→建南汽车站→狄村→东太堡→长风街东口→许坦北→许坦→肉联厂→许东→招呼站→酚醛塑料厂→化工农药厂→肥皂厂→灯泡厂→油泵油嘴厂→液压件厂→农科院

25路:
体育馆→青年路南口→太原五中→青年路中段→青年路口→大南门→宽银幕→府西街→省政府→柳北→上肖墙→东缉虎营→坝陵桥→北肖墙→营西街→河北里→皮革厂→敦化坊→享堂→矿机宿舍→动物园

27路:
雅阁瑞普广场→市人大→财大北校→省林科所→传染病院→医科大学→新建南路→新建路口→水西门→西羊市口→市政府→府西西口→旱西门→柳溪街口→新建北口→胜利桥东

36路:
胜利桥东→新建北口→城北街→大北门→胜利街→矿机→沙河→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟→十三冶二中→光社→光社北→新汾街→新城南门→新城西门→迎新东二条→迎新街

37路:
胜利桥东→北大街口招呼站→食品三厂→程家村→太钢五中→太原林场招呼站→古城→劳研所→赵庄→新村→结构厂→机动处→下兰村→二巷西口→太钢医院

38路:
胜利桥东→北大街→柳溪街→金刚里→招呼站→桃园一巷→半坡东街→府西街→宽银幕→西羊市→西羊市口→桃园三巷→桃园四巷→汾东公寓→桃园路口→迎泽桥东→迎泽桥西→理工大学→万柏林区委→下元→三益公司→三益中学→小井峪

39路:
下元→三益公司→太纺宿舍西→太纺宿舍→千峰南路→客运西站→南内环桥西→市人大→老军营→休干所→平阳路西二巷→水总→杨家堡→棉毛厂→田森超市→学府街西口→长治路口(学府街)→中辐院→省委党校→武警医院→山西大学→山大南门→司法学校→财经大学

201路:
火车站→广场→并西商场→塑料公司→山西报社→大营盘→二营盘→狄村街西口→建南汽车站→狄村→东太堡→长风街东口→许坦北→许西→北营火车站→山针→北营→郑村→新营→航空公司→省局站→太原飞机场

101路:
尖草坪→北宫→西涧河→沙河→矿机→胜利街→大北门→中心医院→城坊街口→省实验中学→府西街→宽银幕→大南门

102路:
尖草坪→北宫→西涧河→沙河→矿机→胜利街→大北门→招呼站→小北门→军区→山大二院→五一小学→桥头街→五一大楼→五一东街→火车站

103路:
财经大学→司法学校→山大南门→山西大学→坞城路→八一路口→三营盘→三营宿舍→北空干休所→电机厂→二营盘→大营盘→山西报社→塑料公司→并西商场→广场

104路:
火车站→五一东街→省博物馆→柳南→大南门→宽影幕→府西街→省实验中学→城坊街口→中心医院→大北门→胜利街→营西街→河北里→皮革厂→敦化坊→车轮厂→东站→小东门→铁路局→大东关→十四中→火车站

105路:
西宫→省电大→兴华小区→冶金电机厂→胜利桥西→胜利桥东→新建北口→城北街→大北门→招呼站→小北门→北大街东口→东站→小东门→铁路局→大东关→十四中→火车站

308路:
火车站→广场→并州饭店→青年路口→大南门→省人大→迎泽桥东→迎泽桥西→后王村→大王村→省中医学院→省直分校→省警校→长风停车场→南屯→西峪东街→南堰→武家庄→董茹→金胜→一电厂→化肥厂→太化俱乐部→太化二中→罗城→古城营西→乱石滩→杨家村→园艺学院→西镇→招呼站→晋祠宾馆→晋祠公园

328路:
火车站→新建南路→老军营→学府街西口→小店→西蒲村→西草寨→监军庄→西柳林→刘家堡→东里解→洛阳村→王吴

602路:
松庄→民营开发区→朝阳街→镇政府→服装城→新郝庄→火车站南→火车站→十四中→铁路医院→五一小学→柳北→省政府→府西街→府西西口→桃园一巷→漪汾桥东→漪汾桥西→漪汾小区→华宇购物广场→漪汾街西口→省建机厂→彭村→西宫→晋机南门→中十六→东社

606路:
十六中→义井→招呼站→义井北→省建六公司→沙沟→太纺→太纺宿舍→千峰南路→客运西站→南内环桥西→市人大→财大北校→菜园村→体育路口→大营盘→一机床→南内环东口→双东东口→并东东口→五一商厦→火车站

606z路:
神堂沟同舟度假村→寨沟→西峪煤矿→北堰→十六中→义井→招呼站→义井北→省建六公司→沙沟→太纺→太纺宿舍→千峰南路→客运西站→南内环桥西→市人大→财大北校→菜园村→体育路口→大营盘→一机床→南内环东口→双东东口→并东东口→五一商厦→火车站

610路:
胜利桥东(北)→胜利桥东→新建北口→城北街→大北门→中心医院→城坊街口→省实验中学→府西街→宽银幕→大南门→少年宫→山大一院→体育馆→菜园村→寇庄→王村南街→长治路口→亲贤村→文华苑→春天时尚广场→高新区北口→高新开发区

611路:
重机宿舍→重机中学→重机医院→重机→重机宾馆→招呼站→下元→万柏林区委→理工大学→迎泽桥西→省人大→新建路口→大南门→青年路口→并州饭店→广场→火车站→五一商厦→双东东口→南内环东口→山姆士超市→建南汽车站

615路:
公交童星幼儿园(兴华北街)→汇丰苑小区→兴华北小区→小区中段→省电大→兴华小区→冶金电机厂→胜利桥西→胜利桥东→新建北口→城北街→大北门→北肖墙→坝陵桥→征兵大厦→东缉虎营→柳北→五一小学→桥头街→五一大楼→广场→火车站→五龙口→黑土巷→铁路宿舍→华北广电学校→东华苑→海天汽配城→东客站

618路:
十六中→义井→义井东街→南屯→长风停车场→省警校→省直分校→省中医学院→大王村→后王村→迎泽桥西→迎泽桥东→省人大→新建路口→大南门→青年路口→并州饭店→广场→火车站

618z路:
神堂沟同舟度假村→寨沟→西峪煤矿→北堰→十六中→义井→义井东街→南屯→长风停车场→省警校→省直分校→省中医学院→大王村→后王村→迎泽桥西→迎泽桥东→省人大→新建路口→大南门→青年路口→并州饭店→广场→火车站

619路:
十六中→义井→义井东街→南屯→长风停车场→长风桥西→丽华苑→长风桥东→和信摩尔(平阳路口)→长治路口→体育路口→军民路口→坞城路口→长风街东口→东太堡→狄村→建南汽车站→五一机器厂→山姆士超市→双塔南巷→双东东口→五一商厦→新郝庄→双塔铁路宿舍→黑土巷→铁路宿舍→华北广电学校→东华苑→海天汽配城→东客站

801路:
公交童星幼儿园(兴华北街)→汇丰苑小区→兴华北小区→小区中段→省电大→兴华小区→冶金电机厂→胜利桥西→胜利桥东→北大街→柳溪街→金刚里→桃园一巷→桃园三巷→桃园四巷→汾东公寓→桃园路口→桃园南路→文源巷→康乐街→省交警总队→老军营北区→公交总公司→体育馆→山西报社→省人民医院→双东东口→南内环东口→山姆士超市→建南汽车站

803路:
下元→下元商场→瓦窑街口→重机技校→漪汾街西口→华宇购物广场→漪汾小区→漪汾桥西→桃园一巷→府西西口→旱西门→西缉虎营→东缉虎营→山大二院→军区→招呼站→小北门→北大街东口→车轮厂→二十四中→北河湾→七一机械厂

804路:
火车站→并州饭店→大南门→新建南路→医科大学→传染病院→财大北校→市人大→省直分校→理工大南校→南上庄→南屯→万国汽贸园→吴家堡→西寨→晋阳湖→贾家庄→东关村→晋源→南街→晋源新城→小站营→晋祠宾馆→晋祠公园

804z路:
火车站→并州饭店→大南门→新建南路→医科大学→传染病院→财大北校→市人大→省直分校→理工大南校→南上庄→南屯→万国汽贸园→吴家堡→西寨→晋阳湖→贾家庄→东关村→晋源→南街→晋源新城→小站营→晋祠宾馆→晋祠公园→东大学校→戏曲学院→戏曲学院招呼站→东院→中日友好学院

805路:
明珠大市场→新晋汾装饰城→机电钢材市场→永乐苑→兴华南小区→省电大→兴华小区→冶金电机厂→胜利桥西→胜利桥东→北大街→柳溪街→金刚里→旱西关→旱西门→西缉虎营→东缉虎营→山大二院→五一小学→桥头街→五一大楼→广场→并西商场→塑料公司→山西报社→太师学院→大营盘→一机床→山姆市超市→五一机器厂→建南汽车站

807路:
华宇购物广场→漪汾小区→漪汾桥西→漪汾桥东→桃园一巷→市政府→西羊市口→水西门→新建路口→新建南路→医科大学→传染病院→省林科所→老军营→休干所→平阳路西二巷→水总→杨家堡→棉毛厂→田森超市→学府街西口→高新区西口→大马→殷家堡→高新区南口→南中环体育路口→国际大都会→北张

808路:
电车公司→城市学院→胜利桥西→胜利桥东→北大街→柳溪街→金刚里→桃园一巷→桃园三巷→桃园四巷→十五中→水西门→大南门→柳南→青年路口→广场→并西商场→塑料公司→山西报社→省人民医院→双东东口→南内环东口→山姆士超市→五一机器厂→建南汽车站→东太堡→太堡街→长风街东口

809路:
下元→理工大学→迎泽桥西→迎泽桥东→桃园路口→汾东公寓→十五中→水西门→宽影幕→府西街→省实验中学→东缉虎营→省工会→坝陵桥→军区→招呼站→小东门→职工新村→轧材厂→肿瘤医院

812路:
双塔寺→招呼站→木器厂→新郝庄→火车站南→火车站→广场→并西商场→塑料公司→山西报社→大营盘→二营盘→狄村街西口→电机厂→北空干休所→三营宿舍→三营盘→八一路口→坞城路→山西大学→武警医院→省委党校→煤炭中心医院→二零七招呼站→体育南路

813路:
下元→千峰路口→理工大学→迎泽桥西→迎泽桥东→省人大→新建南路→医科大学→传染病院→省林科所→财大北校→老军营→休干所→平阳路西二巷→水总→亲贤北街西口→长治路口→体育路口→佳地花园→三营宿舍→三营盘→长风街东口→许坦北→许西→北营火车站→山针→北营

814路:
东客站→东华苑→民营开发区(朝阳鞋城)→朝阳街→镇政府→服装城→新郝庄→并东东口→东岗巷→并州东街→并州西街→太原五中→青年路南口→体育馆→公交总公司→省林科所→财大北校→市人大→南内环桥西→客运西站→千峰南路→太纺宿舍→光华街东口→和平装饰家园

816路:
山姆士学府店→学府街西口→高新区北口→体育西路南口→亲风苑小区→长风街口→省汽修宿舍→体育路南口→省体育场→王村南街东口→体育路北口→大营盘→太师学院→山西报社→塑料公司→东岗巷→并东东口→五一商厦→火车站南→火车站→五龙口→十四中→大东关→大东关街→新源里南区→招呼站→新源里

817路:
体育馆→菜园村→体育路北口→王村南街东口→省体育场→体育路南口→佳地花园→三营宿舍→东太堡→长风街东口→许坦北→许坦→农科院→液压件厂→招呼站→北营→木材公司→金星工具厂→面粉一厂→招呼站→煤机厂→苗圃→生物技术学院→省财贸学院

820路:
双塔寺→招呼站→木器厂→新郝庄→火车站南→火车站→广场→五一大楼→桥头街→五一小学→山大二院→新民中街→东缉虎营→城坊街口→中心医院→大北门→胜利街→工具厂→胜利街西口→程家村→钢材市场→太钢五中→林场→森林公园→赵庄南→赵庄

820z路:
双塔寺→招呼站→木器厂→新郝庄→火车站南→火车站→广场→五一大楼→桥头街→五一小学→山大二院→新民中街→东缉虎营→城坊街口→中心医院→大北门→胜利街→工具厂→胜利街西口→程家村→钢材市场→太钢五中→林场→森林公园→翠馨苑

821路:
胜利桥东→胜利桥西→冶金电机厂→兴华小区→省电大→西宫→晋机→小东流→气管厂→安广小区→三给村→选煤厂→摄乐村→芮城→柴村→金桥西街→柴村桥西→下兰村→二巷西口→太钢医院→迎新商场→迎新街→迎新苑→新城东北角→新华化工厂→兴安宾馆→南寨

822路:
重机宿舍→重机中学→重机→重机宾馆→招呼站→下元→理工大学→迎泽桥西→迎泽桥东→桃园南路→文源巷→康乐街→山大一院→体育馆→菜园村→财大北校→老军营→休干所→省荣军假肢中心→王村南街→省体育场→体育路南口→佳地花园→三营宿舍→东太堡→长风街东口

823路:
明珠大市场→明珠装饰市场→新晋汾装饰城→机电钢材市场→永乐苑→兴华南小区→招呼站→漪汾街→彭村路→后北屯→瓦窑村→工大宿舍→万柏林区委→下元→移村→后王村(千峰南路)→大王村(千峰南路)→千峰南路→客运西站→南内环桥西→省直分校→省警校→长风停车场→南屯→长风桥西→丽华苑→长风桥东→棉毛厂→田森超市→学府街西口→山姆士学府店

824路:
财经大学→司法学校→山大南门→煤干院→许坦西街→省委党校→中幅院→高新区北口→春天时尚广场→文华苑→亲贤村→长治路口→体育路南口→省体育场→王村南街东口→体育路北口→菜园村→财大北校→市人大→南内环桥西→客运西站→千峰南路→大王村(千峰南路)→后王村(千峰南路)→移村→千峰路口→下元

825路:
高新开发区→高新区南口→殷家堡→大马→高新区西口→学府街西口→田森超市→棉毛厂→杨家堡→水总→平阳路西二巷→王村南街西口→寇庄西路→王村南街→王村南街东口→体育路北口→大营盘→一机床→南内环东口→双塔南巷→双东东口→并东东口→五一商厦→新郝庄→双塔铁路宿舍→朝阳街二巷→朝阳街一巷→郝家沟

826路:
东客站→东华苑→经园路口→朝阳街→镇政府→服装城→新郝庄→双塔铁路宿舍→黑土巷→五龙口→大东关→东站→车轮厂→敦化坊→皮革厂→胜利街→矿机→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟(恒山路)→十三冶二中→光社→新城→招呼站→皇后园→招呼站→阳曲村→阳曲镇→后湾→阳曲北

827路:
七府坟→招呼站→太钢三中→26小区→太钢总医院→苹果苑小区→涧河办事处→太钢二中→北宫→西涧河→沙河→矿机→胜利街→工具厂→胜利街西口→新建北口→胜利桥东→胜利桥西→冶金电机厂→兴华小区→省电大→西宫→彭村→省建机厂→重机技校→瓦窑街口→下元商场→万柏林区委→千峰路口→下元

828路:
胜利桥东→新建北口→胜利街西口→工具厂→胜利街→营西街→河北里→皮革厂→敦化坊→车轮厂→东站→小东门→铁路局→大东关→铁路医院→南华门→五一小学→柳北→省政府→府西街→宽银幕→水西门→水西关→西羊市口→市政府→府西西口→旱西门→柳溪街口→新建北口→胜利桥东

829路:
七府坟→招呼站→太钢三中→26小区→太钢总医院→苹果苑小区→涧河办事处→太钢二中→北宫→西涧河→沙河→矿机→胜利街→大北门→中心医院→城坊东街→坝陵桥→军区→招呼站→小东门→铁路局→大东关→十四中→五龙口(火车站)→黑土巷→双塔铁路宿舍→新郝庄(服装城)

830路:
太钢三中→26小区→太钢总医院→尖草坪→北宫→花园后街→涧河桥→卧虎山公园→矿机宿舍→享堂→敦化坊→二十四中→北河湾→敦化南路→赛马场→小东门→铁路局→大东关→十四中→火车站→火车站南→五一商厦→并东东口→双东东口→南内环东口→山姆士超市→五一机器厂→建南汽车站

831路:
华宇购物广场→漪汾小区→漪汾桥西→桃园一巷→桃园三巷→桃园四巷→水西关西口→劲松北路→劲松路→热力公司(汾河公园)→康乐街→山大一院→体育馆→青年路南口→太师学院→大营盘→一机床→南内环东口→山姆士超市→五一机器厂→建南汽车站→狄村→东太堡→太堡街→新型建材厂→双塔南路→双语学校→省国际商务学院

832路:
电车公司→城市学院→兴华小区→省电大→西宫→彭村→省建机厂→重机技校→瓦窑街口→下元商场→下元→三益公司→太纺宿舍西→太纺→沙沟→省建六公司→义井北→招呼站→义井→十六中

833路:
胜利桥东→胜利桥西→冶金电机厂→兴华小区→省电大→西宫→晋机→小东流→三给村→选煤厂→摄乐村→芮城→柴村→柴村桥西→西村→镇城村→镇城村北→西关口→东关口

834路:
胜利桥东→胜利桥西→冶金电机厂→兴华小区→省电大→西宫→晋机南门→中十六(晋机中部的第十六宿舍)→东社→太原西站→线材厂→科技大学→窊流村→西矿街口→窊流路口→金阳路口→铁十二局医院→南寒广场→机修厂宿舍→南寒→148队→北寒→太白巷→河涝湾商场→河涝湾

835路:
胜利桥东→胜利桥西→冶金电机厂→兴华小区→省电大→西宫→晋机→小东流→柴村→西村→兰村→南环路口→东环路口→华北工学院

836路:
松庄(民营区)→民营开发区(朝阳鞋城)→朝阳街→镇政府→服装城→新郝庄→火车站南→双东东口→山姆士超市→建南汽车站→东太堡→长风街东口→八一路口→坞城路→山西大学→山大南门→司法学校→财税学院→财大南门→毛条厂→晋阳街→北营→黄陵→北畔村→招呼站→城西村→康宁街东口→康宁街→小店→昌盛东街→经济开发区

837路:
体育馆→菜园村→寇庄→王村南街→二营盘街→狄村街→建南汽车站→狄村→东太堡→太堡街→一零九医院→双塔南路→双语学校→国际商务学院→龙堡村→许东→省旅游学院→山西煤炭学院

838路:
体育馆→山大一院→大南门→青年路口→并州饭店→广场→火车站→五一商厦→并东东口→双东东口→南内环东口→山姆士超市→五一机器厂→建南汽车站→狄村→东太堡→长风街东口→坞城路口→军民路口→体育路口→长治路口→和信摩尔(平阳路口)→杨家堡→水总→平阳路西二巷→休干所→老军营→财大北校→省林科所→公交总公司→体育馆

839路:
下元→三益公司→太纺宿舍西→太纺→沙沟→省建六公司→义井北→招呼站→义井→十六中→西峪东街→南堰→武家庄→董茹→金胜→一电厂→化肥厂→太化俱乐部→罗城→古城营→西古城营→后营街→东关村(唐城公路)→东城角村→庞家寨→汾东南路→昌盛西街→小店→昌盛东街→经济开发区

840路:
体育馆→菜园村→寇庄→王村南街→亲贤街长治路口→亲贤村→文华苑→春天时尚广场→高新区北口→中幅院→省委党校→许坦西街→煤干院→山大南门→司法学院→财税学院→晋阳街口→西吴村→大吴村→招呼站→工商学院→城西村→北方种业→富士康→康宁街东口→经济开发区→昌盛东街→小店→人民南路→小店育才小学

841路:
胜利桥东→新建北口→大北门→胜利街→矿机→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟(恒山路)→光社→光社北→东方机械厂→新华化工厂→兴安宾馆→南寨→二电厂→西留苗圃→果树场→兰岗→西焉乡政府→东高庄

841z路:
胜利桥东→新建北口→大北门→胜利街→矿机→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟→光社→光社北→东方机械厂→新华化工厂→兴安宾馆→南寨→二电厂→西留苗圃→果树场→兰岗→西焉乡政府→西焉乡→东焉乡→赵家山村

842路:
胜利桥东→新建北口→城北街→大北门→胜利街→矿机→沙河→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟→十三冶二中→光社→光社北→东方机械厂→新华化工厂→兴安宾馆→南寨→兴安化工厂→西留庄→北下温→向阳店→向阳店北→横渠→轨枕厂宿舍→轨枕厂→柏板南→柏板乡政府→正大街→柏板村

843路:
火车站→火车站南→新郝庄→服装城→镇政府→朝阳街→郝庄中学→松庄→后水峪→前水峪→港道→观门前→观家峪

845路:
太钢三中→26小区→太钢总医院→苹果苑小区→白桦苑→中涧河→卧虎山公园→西涧河南街→沙河→矿机→胜利街→大北门→城北街→新建北口→北大街→柳溪街→金刚里→桃园一巷→漪汾桥东→漪汾桥西→漪汾小区→华宇购物广场

848路:
火车站→广场→青年路口→大南门→省人大→迎泽桥西→后王村→大王村→省中医学院→龙兴苑家居广场→省直分校→省警校→长风停车场→南屯→南堰→董茹→金胜→一电厂→化肥厂→罗城→乱石滩→杨家村→园艺学院→西镇→晋祠公园→三家村→王郭村→南化→青阳河→枣园头→北邵→南峪沙河桥→姚村→洞儿沟→固驿

850路:
胜利桥东→新建北口→城北街→大北门→胜利街→矿机→沙河→西涧河→北宫→太钢二中→涧河办事处→苹果苑小区→白桦苑→涧河小学→东涧河西→东涧河→东山水泥厂→牛陀村→下岭村→瓜地沟

850z路:
胜利桥东→新建北口→城北街→大北门→胜利街→矿机→沙河→西涧河→北宫→太钢二中→涧河办事处→苹果苑小区→白桦苑→丈子头西→丈子头

851路:
长风停车场→南屯→长风桥西→长风桥东→杨家堡→水总→平阳路西二巷→休干所→老军营→财大北校→省林科所→老军营北区→省交警总队→康乐街→文源巷→桃园南路→桃园路口→汾东公寓→桃园四巷→桃园三巷→羊市街口→羊市街→宽银幕→府西街→省政府→柳北→东缉虎营→坝陵桥→坝陵北街→军区→山医大二院

852路:
公交童星幼儿园(兴华北街)→汇丰苑小区→兴华北小区→小区中段→省电大→兴华小区→冶金电机厂→胜利桥西→胜利桥东→新建北口→胜利街西口→工具厂→胜利街→矿机→沙河→西涧河→北宫→尖草坪→太钢东门→招呼站→七府坟(恒山路)→光社→新店口→北机务段→新店村→劳教所→谷旦村→永安宫→后沟村→麦坪村→东坪村→小返乡→小返中学→窑头村

855路:
下元→千峰路口→理工大学→迎泽桥西→迎泽桥东→省人大→新建路口→水西门→西羊市口→市政府→府西西口→旱西门→西缉虎营→东缉虎营→工人报社(山大二院)→军区→小北门→河北里→皮革厂→敦化坊→享堂→矿机宿舍→动物园

856路:
火车站→火车站南→五一商厦→并东东口→双东东口→南内环东口→一机床→大营盘→体育路口→菜园村→老军营→休干所→水总→杨家堡→招呼站→长风桥西→南屯→万国汽贸园→吴家堡→西寨→晋阳湖→贾家庄→东关村→晋源→南街→晋源新城→小站营→晋祠宾馆→晋祠公园

858路:
田森超市→棉毛厂→长风桥东→丽华苑→长风桥西→长风停车场→南屯→义井街→义井→十六中→西峪东街→南堰→武家庄→董茹→金胜→一电厂→金胜村→化肥厂→太化俱乐部→太化二中

859路:
河涝湾→河涝湾商场→太白巷→北寒→148队→南寒→机修厂宿舍→南寒广场→下元→迎泽桥西→省人大→大南门→青年路口→并州饭店→火车站

860路:
火车站→火车站南→五一商厦→并东东口→双东东口→南内环东口→山姆士超市→南十方铁路宿舍→白云寺

861路:
杏花实验中学→富康苑小区→肿瘤医院→轧材厂→赛马场→敦化南路南口→大东关街→大东关→十四中→火车站→五一商厦→并东东口→双东东口→南内环东口→山姆士超市→五一机器厂→建南汽车站→狄村→东太堡→长风街东口→八一路口→坞城路→山西大学→山大南门→司法学校→财经大学

863路:
东客站→东华苑→华北广电学校→铁路宿舍→黑土巷→五龙口→十四中→铁路医院→南华门→五一小学→柳北→府西街→宽银幕→大南门→省人大→迎泽桥东→迎泽桥西→后王村→大王村→南内环桥西→客运西站→千峰南路→大众街→后王街

864路:
长风停车场→南屯→长风桥西→长风桥东→和信摩尔(平阳路口)→长治路口→体育路口→军民路口→坞城路口→三营盘→三营宿舍→北空干休所→电机厂→二营盘→大营盘→山西报社→塑料公司→并西商场→广场→五一大楼→桥头街→五一小学→山大二院→军区→小北门→河北里→皮革厂→敦化坊→享堂→矿机宿舍→动物园

865路:
公交童星幼儿园(兴华北街)→汇丰苑小区→兴华北小区→小区中段→省电大→兴华南小区→招呼站→华宇购物广场→漪汾小区→漪汾桥西→望景路口→迎泽桥西→劲松路→热力公司→康乐街→省交警总队→老军营北区→公交总公司→体育馆→菜园村→寇庄→王村南街→长治路口→亲贤村→文华苑→春天时尚广场→高新区北口→高新开发区

866路:
太原选煤厂(摄乐村)→三给村→三给村南→安广小区→气管厂→小东流→晋机→西宫→彭村→省建机厂→漪汾街西口→华宇购物广场→漪汾小区→漪汾桥西→漪汾桥东→桃园一巷→府西西口→府西街→宽银幕→大南门→柳南→广场→五一东街→火车站

868路:
财经大学→司法学校→山大南门→山西大学→坞城路→坞城路口→军民路口→体育路口→长治路口→和信摩尔(平阳路口)→长风桥东→丽华苑→长风桥西→南屯→长风停车场→省警校→省直分校→龙兴苑家居广场→省中医学院→大王村→后王村→招呼站→迎泽桥西→理工大学→千峰路口→下元→三益公司→小井峪街

869路:
圪僚沟→十二局化工公司→社会福利院→下庄→袁家庄→玻璃钢厂→面粉三厂→太原西站→东社→中十六→晋机南门→西宫→省电大→兴华小区→冶金电机厂→胜利桥西→胜利桥东→新建北口→城北街→招呼站→小北门→军区→山大二院→五一小学→桥头街→五一大楼→广场→火车站

870路:
火车站→二六四医院→广场→并西商场→塑料公司→山西报社→大营盘→二营盘→狄村街西口→电机厂→北空干休所→三营宿舍→三营盘→八一路口→坞城路→山西大学→山大南门→司法学校→财税学院→晋阳街口→西吴村→大吴村→招呼站→工商学院→城西村→北方种业→富士康→康宁街东口→康宁街→小店→人民南路→通达街口→小店育才小学

874路:
下元→重机宿舍→铁十二局→闫家沟→西矿街口→玉河苑小区→柏林钢材市场→钢材市场南区→西机路→北寒→西铭→开城路南口→开城里办事处→西铭变电站→风声河

875路:
雅阁瑞普广场→南内环桥西→客运西站→千峰南路→大王村(千峰南路)→后王村(千峰南路)→移村→下元→铁道大厦→建安处→金阳路口→铁十二局医院→南寒广场→机修厂宿舍→南寒→148队→北寒→西局医院→太白巷→河涝湾商场→河涝湾→西局二中→桃杏村→菜市场→五四街→白矿俱乐部→五三街

876路:
圪僚沟→春盛苑小区→招呼站→东社西→东社→太原西站→线材厂→科技大学→窊流村→西矿街口→闫家沟→铁十二局→重机宿舍→下元

877路:
富士康园区→康宁街东口→经济开发区→昌盛街→小店→轴承厂→畜研所→嘉节→红寺村→小马→小马北→殷家堡→大马→高新区西口→学府街西口→田森超市→棉毛厂→和信摩尔(平阳路口)→长治路口→体育路口→军民路口→坞城路口→长风街东口→坞城东街→坞城路→山西大学→山大南门→司法学校→财税学校→晋阳街口→西吴村→大吴村→招呼站→工商学校→城西村→北方种业→富士康园区

901路:
太原火车站→双东东口→南内环东口→山姆士超市→建南汽车站→东太堡→长风街东口→许坦北→许西→北营火车站→山针→北营→郑村→太原机场→武宿→交通学院→三水→鸣李→使赵→交警二中队→交警大队→晋华医院→北山路口→荣发市场→购物中心→泰山庙小学→榆次老城

901z路:
太原火车站→双东东口→南内环东口→山姆士超市→建南汽车站→东太堡→长风街东口→许坦北→许西→北营火车站→山针→北营→郑村→太原机场→武宿→交通学院→三水→鸣李→使赵→交警二中队→交警大队→华钜商城→证券公司→窑新街口→万博数码港→城汽修厂→二招→晋中晋华站→新世界购物广场→购物中心→泰山庙小学→榆次老城

公交线路查询.bat
@echo off
title 公交线路查询器测试版
setlocal enabledelayedexpansion

echo 功能:
echo   ① 输入线路名称,显示该线路的所有站点及发车收车时间;
echo   ② 输入上车站点和下车站点,显示可直达的车次,并显示每条线路中这两个站点及其之间的所有站点及发车收车时间;
echo   ③ 可查询换乘线路。

echo 流程:
echo   1、输入查询对象;
echo     2、判断输入类型:若为数字、数字+字母,则查询车次;若带汉字,则查询站点信息;
echo   3、若查询车次,有则显示,无则提示重新查询;
echo   4、若查询站点,首先检测是否存在此站点;若不存在,则提示换用近似的站点查询;若存在该站点,有直达则只显示直达,无直达则查询换乘;若无换乘,则提示重新查询,此时罗列近似的起止站点供选择。
pause>nul>nul

:begin
cls
set input=
set /p input=请输入车次或上、下车站点:
echo %input%|findstr /r "^[0-9][0-9]*[a-zA-Z]*$">nul &&(
    call :get_line %input%
    echo !num!
    echo !_time!
    echo !line_info:~1,-1!
    goto end
)
call :find_station %input%

rem ========== 查询车次编号匹配的线路信息 ==========

:get_line
:: 获取要查询的车次编号所在的行
cls
set line=
for /f "tokens=1* delims=:" %%i in ('findstr /nr "^%1路:$" 公交线路.txt') do (
    set line=%%i
    if not "!line!"=="" goto get_block
)
goto no-item

rem ========== 查询直达方案 ==========

:find_station
:: 只允许同时输入两个站点
if "%2"=="" goto begin
if not "%3"=="" goto begin
find "-%1-" 公交线路.txt>nul||goto no-start
find "-%2-" 公交线路.txt>nul||goto no-end
cls
set line=
set str=
set var=
for /f "tokens=1* delims=:" %%i in ('findstr /n "\-%1\-" 公交线路.txt') do (
    set line=%%i
    set str=%%j
    set str=!str:-%2-=!
    if not "!str!"=="%%j" (
        set var=%%j
        set var=!var:-%1-=-☆%1☆-!
        set var=!var:-%2-=-☆%2☆-!
        call :pick-up %input% !var!
        call :type_nostop
    )
)
:: 如果没找到直达线路,则查询换乘方案
if "%var%"=="" call :transfer %input%

:end
pause>nul
goto begin

rem ========== 查询换乘方案 ==========

:: 换乘线路只能查到匹配的第一条,可能不是最短线路
:transfer
set first_line=
set first_id=
set first_time=
set second_line=
set second_id=
set second_time=
set link=
for /f "tokens=1* delims=:" %%i in ('findstr /n "\-%1\-" 公交线路.txt') do (
    set first_line=%%i&set str_start=%%j
    set stations_start=!str_start:-= !
    for /f "tokens=1* delims=:" %%k in ('findstr /n "\-%2\-" 公交线路.txt') do (
        set second_line=%%k&set str_end=%%l
        set stations_end=!str_end:-= !
        for %%m in (!stations_start!) do (
            for %%n in (!stations_end!) do (
                if "%%m"=="%%n" (
                    set link=%%m
                    set /a line=!first_line!-2&&call :get_block
                    set first_id=!num!
                    set first_time=!_time!
                    set /a line=!second_line!-2&&call :get_block
                    set second_id=!num!
                    set second_time=!_time!
                    goto type_change
                )
            )
        )
    )
)
if "%link%"=="" goto no-change


rem ━━━━━━━━━━━ 子过程 ━━━━━━━━━━━

rem ========== 获取某条线路的完整信息 ==========
:get_block
set /a line-=1
set count=
for /f "skip=%line%" %%i in (公交线路.txt) do (
    set /a count+=1
    if !count! equ 1 set num=%%i
    if !count! equ 2 set _time=%%i
    if !count! equ 3 set line_info=%%i
    if !count! gtr 3 goto :eof
)

rem ========== 提取上车站点到下车站点之间的所有站点 ==========
:pick-up
for /f "tokens=2-4 delims=☆" %%i in ("%3") do set var=%%i%%j%%k
:: 判断输入的起止点在 公交线路.txt 中的先后顺序
:: 以决定是否逆向显示相关信息
for /f "tokens=1 delims=-" %%i in ("!var!") do if "%%i"=="%2" call :reverse
goto :eof

rem ========== 显示直达方案信息 ==========

:type_nostop
set /a line-=2
call :get_block
echo 乘坐 %num:~0,-2% 路车(%_time%):%var%
echo.
goto :eof

rem ========== 显示换乘方案信息 ==========
:type_change
echo 交汇点是 %link%
echo.
set str_start=!str_start:-%1-=-☆%1☆-!
set str_start=!str_start:-%link%-=-☆%link%☆-!
echo 先搭乘 %first_id:~0,-2% 路在 %link% 站下车,然后换乘 %second_id:~0,-2% 路即可,换乘方案为:
echo.
call :pick-up %1 %link% %str_start%
echo %first_id:~0,-2%路(%first_time%): %var%
set str_end=!str_end:-%2-=-☆%2☆-!
set str_end=!str_end:-%link%-=-☆%link%☆-!
echo.
call :pick-up %1 %2 %str_end%
echo %second_id:~0,-2%路(%second_time%): %var%
echo _____________________________________________________________
goto :eof

rem ========== 逆向显示站点信息 ==========
:reverse
set var=%var:-= %
set str=
for %%i in (%var%) do set str=%%i-!str!
set var=%str:~0,-1%
goto :eof



rem ━━━━━━━━━━━ 出错信息 ━━━━━━━━━━━

:no-start
cls
echo 没有找到名为 "%1" 的上车站点
pause>nul
goto begin

:no-end
cls
echo 没有找到名为 "%2" 的下车站点
pause>nul
goto begin

:no-change
echo 没有找到直达线路,也找不到只转一次车的换乘方案
pause>nul
goto begin

:no-item
echo 没有找到车次编号为 "%input%" 的相关信息,请重新查阅.
pause>nul
goto begin

附件在下楼
作者: zsx199709     时间: 2009-2-2 19:04
附件下载地址:http://upload.cn-dos.net/img/1285.rar