![Board logo](images/default/logo.gif)
标题: [文本处理] 如何把跳转标签用一个变量代替 [打印本页]
作者: shaofeng 时间: 2008-12-21 21:59 标题: 如何把跳转标签用一个变量代替
大家先看一下这段代码:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (a.txt) do (
set /a n+=1
set "_!n!=%%a"
echo !n!、%%a
)
set /p UserSelection= 请输入您的选择(1/2/3/4/5):
IF not "%UserSelection%"=="" SET UserSelection=%UserSelection:~0,1%
if "%UserSelection%"=="1" goto !_%UserSelection%!
if "%UserSelection%"=="2" goto !_%UserSelection%!
if "%UserSelection%"=="3" goto !_%UserSelection%!
if "%UserSelection%"=="4" goto !_%UserSelection%!
if "%UserSelection%"=="5" goto !_%UserSelection%!
:张三
echo 这里是张三
goto :end
:李四echo 这里是李四
goto :end
:王五
echo 这里是王五
goto :end
:麻六
echo 这里是麻六
goto :end
:人发
echo 这里是人发
:end
pause
文件:a.txt内容为:
张三
李四
王五
麻六
人发
大家可以先运行一下,我的问题是:现在我直接把张三、李四等几个名字写在主程序里,这样的不足之处是,如果有一天我把文件a.txt中的内容做了增加或减少,那我必须修改程序中红色的的跳转标签才能保正程序正确执行。我想能不能把主程序红色的跳转标签改成变量,这样我在增加或减少a.txt文件后就不用修改主程序了!
请各位帮忙!
作者: rat 时间: 2008-12-22 02:23
没法实现。
作者: lhjoanna 时间: 2008-12-22 03:27
- @echo off&setlocal enabledelayedexpansion
- :start
- set n=0
- for /f "delims=" %%a in (a.txt) do (
- set /a n+=1
- set "_!n!=%%a"
- echo !n!、%%a
- )
- echo.&set /p "UserSelection=请输入您的选择(1-!n!):"
- for /l %%i in (1 1 !n!) do (
- if "!UserSelection!" equ "%%i" echo.&echo 这里是!_%%i!&pause>nul&goto start
- )
- goto start
复制代码
这样可以实现增减a.txt而不用更改程序。但若要像楼主代码那样一一列出标签,不改主程序是不可能的,除非写一个辅助程序,往此程序中添加相应标签的代码,然后再调用此程序。
[ 本帖最后由 lhjoanna 于 2008-12-22 03:38 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |