我需要从多个人导出联系人,并以特定的方式修改选项卡分隔文件为CSV.导出的文件只有两列,名称和电子邮件,但我需要它是电子邮件,名称,名字,姓氏.我的脚本,虽然可能原油,我设置它作为一个sendto运行,确实有效。但是如果某人没有列出第二个名字,我会遇到一个问题。我可以在分割周围放一个if语句吗?当我尝试时,它总是中断。
这里是一些像我开始的样本日期。它以两列开始,我需要跳过几行,然后是一个姓名/电子邮件列表。它确实在tab del中。但这很难在这里显示。
组名groupxyz
成员
比尔·泰德,email protected(https://stackoverflow.com/cdn-cgi/l/email-protection),
里克·塞布,email protected(https://stackoverflow.com/cdn-cgi/l/email-protection),
苏茜,email protected(https://stackoverflow.com/cdn-cgi/l/email-protection),
汤姆·克鲁兹,email protected(https://stackoverflow.com/cdn-cgi/l/email-protection),
这是我的代码到目前为止。
"Received $($args.Count) files:"
foreach( $path in $args ) {
"Processing file: $path"
$filename = [System.IO.Path]::GetFileName($path)
}
Import-CSV -Path $path -Delimiter "," -Header Email, Name, FirstName, LastName | select -skip 4 |
ForEach-Object{
$first, $last = $_.Email -split " "
$_.FirstName = "$first"
$_.LastName = "$last"
$email = $_.Name
$_.Name = "$first $last"
$_.Email = $email
$_
} |
Export-CSV C:\Users\jjasper\Desktop\Composer\ContactExport\result\$filename -Delimiter "," -NoTypeInformation
(Get-Content -Path C:\import\$filename ).Replace('"','') | Set-Content -Path C:\import\$filename
(Get-Content -Path C:\import\$filename ) | ? {$_.trim() -ne "" } | set-content C:\import\$filename
字符串
1条答案
按热度按时间hgc7kmma1#
如果没有CSV内容的样本,很难帮助你。但是,我认为你应该尝试使用对象来按照你想要的方式操作数据,例如,如果你的CSV有4个头,这里是你可以做的。
字符串
您只需获取所有CSV内容,并通过导入的数据生成所需的数组,然后导出该数组,或者如果您查看CSV列表,则继续将其添加到文件中。