Board logo

标题: [文本处理] 批处理如何从文本中取出2个关键字开头的内容,并将2个关键字输出到一行? [打印本页]

作者: wuxiaobo    时间: 2012-2-1 10:26     标题: 批处理如何从文本中取出2个关键字开头的内容,并将2个关键字输出到一行?

从邮件服务器上导出的内容如下,每行是用户的一个属性,我只需要取其中InternetAddress\FullName\mailfile三个属性,并把它的值输出到一个文本文件。
LocalAdmin:  
AvailableForDirSync:  1
CheckPassword:  0
PasswordChangeInterval:  0
PasswordGracePeriod:  0
我所编辑的脚本如下:
  1. set OW=
  2. set EM=
  3. set MF=
  4. setlocal enabledelayedexpansion
  5. for /F "eol=O tokens=1,2* delims=:" %%i in (d:\test\contact.txt)  do (
  6. if %%i==InternetAddress ( %EM%=%%j )
  7. if %%i==FullName ( %OW%=%%j )
  8. if %%i==MailFile ( %MF%=%%j )
  9. if "!MF!" NEQ ""  ( echo %OW%;%EM% >>storemail.txt|set %OW%=|set %EM%="" )
  10. )
复制代码
发现For语句根本不循环。
作者: canyuexiaolang    时间: 2012-2-1 10:47

LocalAdmin:  
AvailableForDirSync:  1
CheckPassword:  0
PasswordChangeInterval:  0
PasswordGracePeriod:  0


没有那三个属性啊InternetAddress\FullName\mailfile

请发完整。
作者: lvsehuaxue    时间: 2012-2-1 10:54

  1. @echo off
  2. (findstr /i "internetaddress fullname mailfile" a.txt)>b.txt
复制代码

作者: wuxiaobo    时间: 2012-2-1 11:11

发全好长的!
FullName:  CN=NewCity
InternetAddress: [email]Newcity@abc.com[/email]
MailFile: Newcity.psf
作者: wuxiaobo    时间: 2012-2-1 11:13

另外3楼的做法不对,我要得是把这3行输出到一行。也就是说针对一个用户,把三个属性列为一行。如4楼所发信息,应该是CN=NewCity, [email]Newcity@abc.com[/email],Newcity.psf
作者: lvsehuaxue    时间: 2012-2-1 13:59

本帖最后由 lvsehuaxue 于 2012-2-1 14:01 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. (findstr /i "internetaddress fullname mailfile" a.txt)>$
  3. (for /f "tokens=1,2 delims=: " %%i in ($) do (
  4.     set /a n+=1
  5.     set v=!v!,%%j
  6.     if !n!==3 echo !v:~1!&set "v="&set n=0
  7. )>b.txt
复制代码

作者: Hello123World    时间: 2012-2-7 17:24

回复 6# lvsehuaxue


    怎么不把$删除?




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