Board logo

标题: 同行显示多列文本 [打印本页]

作者: f6fly     时间: 2010-4-21 18:15    标题: 同行显示多列文本

有一个1.txt文件内容如下:

1:北京市 bj001-004
2:天津市 tj003-003
3:上海市
4:重庆市
5:河北省
6:山西省
7:辽宁省
8:吉林省
9:黑龙江省
10:江苏省
11:浙江省
12:安徽省
13:福建省
14:江西省
15:山东省
16:河南省
17:湖北省
18:湖南省

现在想让它在屏幕这样显示,并且当用户输入它前面的序号时再显示相应的地名。如敲入18 则显示 湖南省


1:北京市     2:天津市     3:上海市     4:重庆市     5:河北省
6:山西省     7:辽宁省     8:吉林省     9:黑龙江省 10:江苏省
11:浙江省   12:安徽省   13:福建省   14:江西省    15:山东省
16:河南省   17:湖北省   18:湖南省

请问高手们用批处理该怎么写呢?
作者: f6fly     时间: 2010-4-21 19:08
:Start
@echo off&setlocal enabledelayedexpansion&Title
cls
set a=0
echo.
echo.
for /F "tokens=2 delims=." %%i in (1.txt) do (
set/a a+=1
    set /a m=!a!
    if !m!==1 set n=
    set /p=[!a!]  %%i<nul
    set /a l+=1
    if !l!==3 set l=1
)
echo.
echo.    *************************************
set o=
set/p o=    请输入序号按回车键确认([]内数字):
if not defined test_%o% echo.&echo.    输入错误,请按任意键继续,或按 Ctrl+C 终止程序!&goto end

:end

这样子不行啊,有没有高手帮忙看看呀
作者: Hanyeguxing     时间: 2010-4-21 19:23

@echo off&setlocal enabledelayedexpansion
for /f "tokens=1,2* delims=: " %%i in (1.txt) do (
set/a n+=1,m+=1&set han_%%i=%%j
set/p=%%i:%%j        <nul
if !m!==4 set m=0&echo.)
echo.
:ye
set/p p=请输入代码,0为继续下一个步骤
if %p%==0 goto :gu
call echo.%%han_!p!%%
goto :ye
:gu
pause
set/p=%%i:%%j        <nul中间的连续空格为一个制表符

[ Last edited by Hanyeguxing on 2010-4-21 at 19:25 ]