Board logo

标题: 批处理如何提取文本指定相关内容? [打印本页]

作者: woxingwoshu007    时间: 2009-4-19 16:02     标题: 批处理如何提取文本指定相关内容?

需要这样一个文本处理:
要根据姓名找出对应的ID.(注ID是无顺序的)
a.txt内容如下.
ID:1
姓名:极度

ID:2
姓名:沉沦

ID:3
姓名:极度沉沦

我现在知道一个叫极度沉沦的人.我想得到他的ID....怎么办....
现在有段代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2 delims=:" %%i in (a.txt) do (
  3. set second=!first!&set first=%%i
  4. if defined second (set !first!=!second!&set first=)
  5. )
  6. set/p name=请输入姓名:
  7. call echo %name%的Id=!%name%!
  8. pause
复制代码


我感觉是变量间的转换,理不清,帮忙解释清楚...希望可以有其他解决方法!!!.......

[ 本帖最后由 woxingwoshu007 于 2009-4-19 16:21 编辑 ]
作者: 随风    时间: 2009-4-19 16:36

解决问题的代码你已经有了,至于说理不清嘛,只能靠你自己,这个别人没法帮你。
不过代码可以简化,可能有助于你的理解
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2 delims=:" %%i in (a.txt) do (
  3.    set second=!first!&set first=%%i
  4.    if defined second set %%i=!second!
  5. )
  6. set/p name=请输入姓名:
  7. echo %name%的Id=!%name%!
  8. pause
复制代码

[ 本帖最后由 随风 于 2009-4-19 16:40 编辑 ]
作者: GodInHell    时间: 2009-4-19 16:46

  1. @echo off
  2. set input=&set /p input=请输入姓名:
  3. set /a m=0
  4. for /f "tokens=2 delims=:" %%a in (a.txt) do (
  5.   set /a m+=1,n=m-1
  6.   call set _%%m%%=%%a
  7.   if "%%a"=="%input%" (
  8.     call call echo."%input%"的ID是:%%%%_%%n%%%%%%
  9.     echo.&pause&goto :eof
  10. ))
  11. echo.对不起,找不到"%input%"&echo.&pause
复制代码





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