中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 10:49
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 同行显示多列文本 查看 917 回复 2
楼 主 同行显示多列文本 发表于 2010-04-21 18:15 ·  中国 广东 深圳 润迅通信集团有限公司
初级用户
积分 123
发帖 13
注册 2004-02-24 00:00
22年会员
UID 18298
性别 男
状态 离线
有一个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:湖南省

请问高手们用批处理该怎么写呢?
2 发表于 2010-04-21 19:08 ·  中国 广东 深圳 润迅通信集团有限公司
初级用户
积分 123
发帖 13
注册 2004-02-24 00:00
22年会员
UID 18298
性别 男
状态 离线
: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

这样子不行啊,有没有高手帮忙看看呀
3 发表于 2010-04-21 19:23 ·  中国 吉林 延边朝鲜族自治州 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
@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 ]
论坛跳转: