本帖最后由 随风 于 2011-6-6 05:50 编辑
总算搞出来了,基本符合要求,复杂路线还没测试.
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1* delims= " %%i in (dt.txt) do (
- set max=0
- for %%a in (%%j) do (
- set xian.%%i=!xian.%%i! %%a
- if defined zan.%%a set jie.%%a=!zan.%%a! %%i
- set zan.%%a=!zan.%%a! %%i
- set /a max+=1
- set /a ###%%i.%%a=!max!
- )
- )
- :: 获取所有线上的节点站名
- for /f "tokens=2,3 delims=.=" %%i in ('set jie.') do (
- for %%a in (%%j) do set #%%a=!#%%a! %%i
- )
- :start
- setlocal&cls
- set /p xxx=输入起点站和终点站如: 华强路 岗厦北
- for /f "tokens=1,2 delims= " %%a in ("!xxx!") do (
- set qix=!zan.%%a!&set "zx=!zan.%%b!"
- set qidian=%%a&set "zongdian=%%b"
- for %%i in (!zan.%%b!) do set zd.%%i=%%i
- )
- echo !qidian! --- !zongdian! !qix! --- !zx!
- echo;.............................................&echo;
- :: 判断是否在同一条线
- for %%a in (!qix!) do (
- for %%b in (!zx!) do if "%%a"=="%%b" (
- set tong=!tong! %%a
- call :tong !qidian! !zongdian!
- echo !ok! 共 !zzu! 站
- echo;.............................................
- )
- )
- if defined tong echo;&pause&endlocal&goto :start
- rem 起点线 终点线
- call :kai "!qix!"
- for /f "tokens=1* delims==" %%i in ('set $') do (
- set "%%i="&set /a mmm=0
- set tong=!qix!&set L1=!qidian!
- for %%k in (%%j) do (
- for /f "tokens=1,2 delims=/" %%a in ("%%k") do (
- set num=%%a&set tong2=%%b
- )
- call :tong !L1! !num!
- set /a mmm+=zzu,%%i+=1
- set tong=!tong2!&set L1=!num!
- echo !ok! !zzu! 站
- )
- set tong=!zx!
- call :tong !num! !zongdian!
- set /a mmm+=zzu&set "mmm= !mmm!"
- echo 累计!mmm:~-3!站 !ok! !zzu!站
- echo;.............................................&echo;
- )
- echo;&pause&endlocal&goto :start
- :kai
- for %%a in (%~1) do (
- set t.%%a=a
- for %%b in (!#%%a!) do (rem %%b为%%a线上的节点站名
- for %%c in (!jie.%%b!) do (rem %%c为节点站上的线名
- if not defined t.%%c (
- if not defined zd.%%c (
- set @=!@! %%b/%%c
- call :kai "%%c"
- set "t.%%c="
- set @=!@: %%b/%%c=!
- ) else (
- set /a fl.+=1
- set $!fl.!=!@! %%b/%%c
- )
- )
- )
- )
- )
- goto :EOF
- :tong
- for %%a in (!tong!) do (
- set strq=!###%%a.%1!
- set strz=!###%%a.%2!
- set /a zzu=strq-strz
- set zzu=!zzu:-=!
- set ok=%%a/%1 --- %%a/%2
- )
- goto :EOF
复制代码
|