是否可以使用dos / cmd批处理文件从csv中提取电子邮件?

时间:2015-05-31 10:41:56

标签: batch-file cmd batch-processing dos

我有一个包含1M电子邮件地址的csv文件,我需要将它们从CSV中提取到文本文件中。

我用Google搜索了一下,发现很少的链接,而我发现的那些链接并没有做到。

甚至可以使用dos / cmd批处理文件从csv中提取电子邮件? 我现在可以用Linux做到这一点,但很遗憾我必须使用Windows。

2 个答案:

答案 0 :(得分:1)

Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
'Remove ^ from quoting command line. Quote, ampersand and brackets
Pttn = Replace(Arg(2), "^(", "(")
Pttn = Replace(Pttn, "^)", ")")
Pttn = Replace(Pttn, "^&", "&")
Pttn = Replace(Pttn, "^""", """")
Set regEx1 = New RegExp
If Instr(LCase(Arg(1)), "i") > 0 then
    regEx1.IgnoreCase = True
Else
    regEx1.IgnoreCase = False
End If 
regEx1.Global = False
regEx1.Pattern = Pttn 
Do Until Inp.AtEndOfStream
    Line=Inp.readline
    Line = RegEx1.Replace(Line, Arg(3)) 
    outp.writeline Line
Loop

使用

cscript //nologo "c:\path to\scriptname.vbs" < inputfile.txt > outputfile.txt

<强>替换

filter replace {i|n} expression replace
filter repl {i|n} expression replace

使用正则表达式查找和替换文本。

还用于从文件中提取子字符串。

表达式中的&符号和括号必须使用插入符进行转义。不要逃避插入。使用十六进制代码\ x22作为引号。

SearchOptions

i - 忽略大小写 n - 无

表达

正则表达式参考

替换

要替换的文字。使用$ 1,$ 2,$ ...,$ n在替换字符串中指定子匹配

示例

filter replace i "=" "No equal sign" < "%systemroot%\win.ini"

这将在方括号内搜索文本,并用cat替换该行,后跟括号内的文本

Filter replace i "^\[^(.*^)\]" "cat$1" < %windir%\win.ini

这将搜索从第11个字符到行尾的任何文本和打印。

Filter replace i "^.{10}^(.*^)$" "$1" < %windir%\win.ini

这将搜索CSV文件并打印第二个和第四个字段

Filter replace i "^.+,^(.+^),.+,^(.+^)$" "$1,$2" < csv.txt

尝试像RegEx一样(互联网上有成千上万的{{​​3}})

[0-9a-zA-Z]+\.?[0-9a-zA-Z]?@[0-9a-zA-Z]+\.com|org|net|gov

答案 1 :(得分:0)

@set @code=@Batch   /*

@echo off
cscript //nologo //E:JScript "%~F0"
goto :EOF

@set @code=@JScript */

var fileContents = WScript.StdIn.ReadAll(),
    search = /(\w+)@(\w+)\.(\w+)/g, match;
while ( match = search.exec(fileContents) ) {
   WScript.Stdout.WriteLine(match[0]);
}

复制批处理文件中的先前代码;例如: GetEmails.bat ,并执行它重定向输入/输出文件。这是示例会话的输出:

C:\> type theFile.txt
Line, with, an, email, address, joedoe@unknown.org
Please, send, mail, to, george@contoso.com, and, someone@example.com, Thanks!
Line, number, 3, with, no, email, address

C:\> GetEmails.bat < theFile.txt
joedoe@unknown.org
george@contoso.com
someone@example.com