我需要遍历在一个目录中找到的.vcf文件,使用powershell将它们合并为一个.vcf文件。我希望N:
值为文件名。这就是我所拥有的,它不起作用。请帮忙。
$fileDirectory = "c:\Contacts";
$parse_results = New-Object System.Collections.ArrayList;
$vcard = ""
foreach($file in Get-ChildItem $fileDirectory)
{
$contacts = ConvertFrom-Csv (Get-Content $file.FullName).Replace(';',',')
foreach ($contact in $contacts) {
$vcard = $vcard + "BEGIN:VCARD" + "`r`n"
$vcard = $vcard + "VERSION:3.0" + "`r`n"
$vcard = $vcard + "N:" + $file.Basename + ";" + "" + "`r`n"
$vcard = $vcard + "FN:" + "" + " " + "" + "`r`n"
$vcard = $vcard + "TEL:" + $contact."general phone" + "`r`n"
$vcard = $vcard + "EMAIL:" + $contact."general email" + "`r`n"
$vcard = $vcard + "END:VCARD" + "`r`n"
}
$vcard | Add-Content ($File.Basename + ".vcf")
}
谢谢。
更新:我使用此代码使其工作(代码很简单,用于调试目的)
$files = Get-ChildItem "C:\Contacts\"
for ($i=0; $i -lt $files.Count; $i++) {
$string = ""
$string = Get-Content $files[$i].FullName | Out-String
$newName = "N:" + $files[$i].BaseName
$string -replace '(?m)^N:{1}\W.*$', $newName
}
这会产生一个文件,其中包含所有vcf信息。 我遇到的困难是因为我不太清楚.vcf文件是如何工作的。这么简单。
答案 0 :(得分:0)
我使用此代码
开始工作$files = Get-ChildItem "C:\Contacts\"
for ($i=0; $i -lt $files.Count; $i++) {
$string = ""
$string = Get-Content $files[$i].FullName | Out-String
$newName = "N:" + $files[$i].BaseName
$string -replace '(?m)^N:{1}\W.*$', $newName
}