标题: [文本处理] 批处理如何从文本中取出2个关键字开头的内容,并将2个关键字输出到一行? [打印本页]
作者: wuxiaobo 时间: 2012-2-1 10:26 标题: 批处理如何从文本中取出2个关键字开头的内容,并将2个关键字输出到一行?
从邮件服务器上导出的内容如下,每行是用户的一个属性,我只需要取其中InternetAddress\FullName\mailfile三个属性,并把它的值输出到一个文本文件。
LocalAdmin:
AvailableForDirSync: 1
CheckPassword: 0
PasswordChangeInterval: 0
PasswordGracePeriod: 0
我所编辑的脚本如下:- set OW=
- set EM=
- set MF=
- setlocal enabledelayedexpansion
-
- for /F "eol=O tokens=1,2* delims=:" %%i in (d:\test\contact.txt) do (
- if %%i==InternetAddress ( %EM%=%%j )
- if %%i==FullName ( %OW%=%%j )
- if %%i==MailFile ( %MF%=%%j )
- if "!MF!" NEQ "" ( echo %OW%;%EM% >>storemail.txt|set %OW%=|set %EM%="" )
- )
复制代码
发现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
- @echo off
- (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 编辑
- @echo off&setlocal enabledelayedexpansion
- (findstr /i "internetaddress fullname mailfile" a.txt)>$
- (for /f "tokens=1,2 delims=: " %%i in ($) do (
- set /a n+=1
- set v=!v!,%%j
- if !n!==3 echo !v:~1!&set "v="&set n=0
- )>b.txt
复制代码
作者: Hello123World 时间: 2012-2-7 17:24
回复 6# lvsehuaxue
怎么不把$删除?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |