Board logo

标题: [文本处理] 如何把跳转标签用一个变量代替 [打印本页]

作者: 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

  1. @echo off&setlocal enabledelayedexpansion
  2. :start
  3. set n=0
  4. for /f "delims=" %%a in (a.txt) do (
  5.    set /a n+=1
  6.    set "_!n!=%%a"
  7.    echo !n!、%%a
  8. )
  9. echo.&set /p "UserSelection=请输入您的选择(1-!n!):"
  10. for /l %%i in (1 1 !n!) do (
  11.    if "!UserSelection!" equ "%%i"  echo.&echo 这里是!_%%i!&pause>nul&goto start
  12. )
  13. goto start
复制代码
这样可以实现增减a.txt而不用更改程序。但若要像楼主代码那样一一列出标签,不改主程序是不可能的,除非写一个辅助程序,往此程序中添加相应标签的代码,然后再调用此程序。

[ 本帖最后由 lhjoanna 于 2008-12-22 03:38 编辑 ]




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2