[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何从文本中取出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语句根本不循环。

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


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

请发完整。

TOP

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

TOP

发全好长的!
FullName:  CN=NewCity
InternetAddress: [email]Newcity@abc.com[/email]
MailFile: Newcity.psf

TOP

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

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

回复 6# lvsehuaxue


    怎么不把$删除?

TOP

返回列表