2017-01-13 3 views
-2

меня на файловом несколько имен,PowerShell преобразовать из названия

Mario Rossi 
John Doe Michael 
Mario De Rossi 
Mario D'Rossi

Я хотел бы, чтобы преобразовать их в этом формате с помощью PowerShell.

Mario,Rossi,"Mario Rossi [External]",m.rossi,[email protected],$TRUE 
John,"Doe Michael","John Doe Michael [External]",j.michael,[email protected],$TRUE 
Mario,"De Rossi","Mario De Rossi [External]",m.derossi,[email protected],$TRUE 
Mario,"D'Rossi","Mario D'Rossi [External]",m.drossi,[email protected],$TRUE

Возможно ли это?

+3

Да, это возможно. что ты уже испробовал? –

+0

Я не знаю, как это сделать автоматически, поэтому каждый раз я делаю это вручную, что очень сложно. вы можете помочь? Спасибо. – m0b1l3us3r

+1

@ m0b1l3us3r Вам просто нужно сформулировать формальные правила, как конвертировать имя в другие вещи и написать код для применения этих правил. В настоящее время я вижу следующие проблемы: 'John Doe Michael' ->' j.michael_ext', почему 'Doe' не является частью электронной почты? 'Mario D'Rossi' ->' m.drossi' почему нет '_ext' в электронной почте? – PetSerAl

ответ

3

попробовать что-то вроде этого

Get-Content "C:\temp\StartFile.txt" | 
%{ 
    $Words=$_ -split ' ' 
    $FisrtName=$Words[0] 
    $LastName= ($Words[1..($Words.Length -1)] -join ' ') 
    $LastNameFormated=$LastName.ToLower().Replace(" ", "").Replace("'", "") 
    '{0},"{1}","{0} {1} [External]",{2}.{3},{2}.{3}[email protected],$TRUE' -f $FisrtName, $LastName, $FisrtName.ToLower().Substring(0, 1), $LastNameFormated 
} | Out-File "C:\temp\EndFile.txt" 
+0

Точно, что я хотел, Спасибо большое С уважением. – m0b1l3us3r