【发布时间】:2020-07-09 12:24:45
【问题描述】:
你能帮我实现一个计数器,以便从里面的 csv 生成一个包含多个元素的 xml 文件吗?
这是 csv 文件
UCB63_DATENUM;U6618_FILENAME;UF6E8_CANAL;U65B8_IDRP
7/8/19 22:27;457E6659_ZN_LIQRLVPR_A_V_ML.pdf;ML;1367091
9/11/19 23:03;49453878_ZN_LIQRLVPR_A_V_ML.pdf;ML;106440
9/24/19 21:04;497E585B_ZN_LIQRLVPR_A_V_CS.pdf;CS;1536658
2/12/20 22:12;58453B75_ZN_LIQRLVPR_A_V_ML.pdf;ML;1406091
和代码
我在屏幕上的回报很好,但因为我没有调用该值,所以它不能增加。 目前我尝试过的所有事情都有一个不好的问题(只有最后一个结果似乎每隔一个就会崩溃)
请帮帮我
#vARIABLES EN DUR
$FREQUENCE_DECOMPTE = 'Nom="FREQUENCE_DECOMPTE" Valeur="MENS"'
$LIBELLE_ORGANISME = 'Nom="LIBELLE_ORGANISME" Valeur="HUMANIS CCN OG"'
$MONTANT_TOTAL = 'Nom="MONTANT_TOTAL" Valeur="0"'
$POLE = 'Nom="POLE" Valeur="1ADP"'
$CODE_ORGANISME = 'Nom="CODE_ORGANISME" Valeur="1ADP"'
# Paramètre nombre item par xml VALEUR A MODIFIER A 5000
$maxItemsPerXml = 3
# Nombre de process restants
$restant = $liste.Count
# Paramétrage compteur
#Import du csv et création des différentes collections
$liste = Import-Csv -path 'c:\temp\testH.csv' -Delimiter ';'
[System.Collections.ArrayList] $DateErrors = @()
[System.Collections.ArrayList] $FileNameErrors = @()
[System.Collections.ArrayList] $CanalErrors = @()
[System.Collections.ArrayList] $NumAssureErrors = @()
#création fichier
$xmlFile = "C:\Temp\MIG_ERELEVE_MM_$(get-date -f dd-MM-yyyy)_{0:D3}.xml" -f $xmlFileCount
#En-tête
$output = @"
<?xml version="1.0" encoding="utf-8"?>
<Documents Origine="ERELEVE_HUM">
`n
"@
foreach($item in $liste)
{
#Initiation variables booléennes
$MyDateIsCorrect = $true
$MyFileNameIsCorrect = $true
$MyCanalIsCorrect = $true
$MyNumAssureIsCorrect = $true
#Transformations données
$date = $($item.UCB63_DATENUM -split " ")[0]
$renommage = [System.IO.Path]::GetFileNameWithoutExtension($item.U6618_FILENAME)
#Génération output XML
if($MyDateIsCorrect -and $MyFileNameIsCorrect -and $MyCanalIsCorrect -and $MyNumAssureIsCorrect){
$output += @"
<Document>
<Index Nom="TITLE" Valeur="$renommage"/>
<Index Nom="NO_ASSURE" Valeur="$($item.U65B8_IDRP)"/>
<Index Nom="DEBUT_PERIODE" Valeur="$RecupDateFinTraitement"/>
<Index Nom="FIN_PERIODE" Valeur="$RecupDateFin30"/>
<Index $FREQUENCE_DECOMPTE/>
<Index $LIBELLE_ORGANISME/>
<Index $MONTANT_TOTAL/>
<Index Nom="DATE_GENERATION_DECOMPTE"$RecupDateFinTraitement/>
<Index $POLE/>
<Index $CODE_ORGANISME/>
<Index Nom="ALERTE_MAIL" Valeur="$fin"/>
<Fichier Nom="$($item.U6618_FILENAME)"/>
</Document>`r`n
"@
}
}
$output += @"
`r`n</Documents>
"@
$output | Set-Content -Path $xmlFile -Encoding UTF8
$DateErrors.ToArray() | Export-Csv -Path c:\temp\DateErrors.csv -NoTypeInformation
$FileNameErrors.ToArray() | Export-Csv -Path c:\temp\FileNameErrors.csv -NoTypeInformation
$CanalErrors.ToArray() | Export-Csv -Path c:\temp\CanalErrors.csv -NoTypeInformation
$NumAssureErrors.ToArray() | Export-Csv -Path c:\temp\NumAssureErrors.csv -NoTypeInformation
我的输出看起来像这样,但是当我达到 3 个元素时,我想创建一个新文件
<?xml version="1.0" encoding="utf-8"?>
<Documents Origine="ERELEVE_HUM">
<Document>
<Index Nom="TITLE" Valeur="457E6659_ZN_LIQRLVPR_A_V_ML"/>
<Index Nom="NO_ASSURE" Valeur="1367091"/>
<Index Nom="DEBUT_PERIODE" Valeur="09-07-2020"/>
<Index Nom="FIN_PERIODE" Valeur="08/08/2020"/>
<Index Nom="FREQUENCE_DECOMPTE" Valeur="MENS"/>
<Index Nom="LIBELLE_ORGANISME" Valeur="HUMANIS CCN OG"/>
<Index Nom="MONTANT_TOTAL" Valeur="0"/>
<Index Nom="DATE_GENERATION_DECOMPTE"09-07-2020/>
<Index Nom="POLE" Valeur="1ADP"/>
<Index Nom="CODE_ORGANISME" Valeur="1ADP"/>
<Index Nom="ALERTE_MAIL" Valeur="1"/>
<Fichier Nom="457E6659_ZN_LIQRLVPR_A_V_ML.pdf"/>
</Document>
<Document>
<Index Nom="TITLE" Valeur="49453878_ZN_LIQRLVPR_A_V_ML"/>
<Index Nom="NO_ASSURE" Valeur="106440"/>
<Index Nom="DEBUT_PERIODE" Valeur="09-07-2020"/>
<Index Nom="FIN_PERIODE" Valeur="08/08/2020"/>
<Index Nom="FREQUENCE_DECOMPTE" Valeur="MENS"/>
<Index Nom="LIBELLE_ORGANISME" Valeur="HUMANIS CCN OG"/>
<Index Nom="MONTANT_TOTAL" Valeur="0"/>
<Index Nom="DATE_GENERATION_DECOMPTE"09-07-2020/>
<Index Nom="POLE" Valeur="1ADP"/>
<Index Nom="CODE_ORGANISME" Valeur="1ADP"/>
<Index Nom="ALERTE_MAIL" Valeur="1"/>
<Fichier Nom="49453878_ZN_LIQRLVPR_A_V_ML.pdf"/>
</Document>
<Document>
<Index Nom="TITLE" Valeur="497E585B_ZN_LIQRLVPR_A_V_CS"/>
<Index Nom="NO_ASSURE" Valeur="1536658"/>
<Index Nom="DEBUT_PERIODE" Valeur="09-07-2020"/>
<Index Nom="FIN_PERIODE" Valeur="08/08/2020"/>
<Index Nom="FREQUENCE_DECOMPTE" Valeur="MENS"/>
<Index Nom="LIBELLE_ORGANISME" Valeur="HUMANIS CCN OG"/>
<Index Nom="MONTANT_TOTAL" Valeur="0"/>
<Index Nom="DATE_GENERATION_DECOMPTE"09-07-2020/>
<Index Nom="POLE" Valeur="1ADP"/>
<Index Nom="CODE_ORGANISME" Valeur="1ADP"/>
<Index Nom="ALERTE_MAIL" Valeur="1"/>
<Fichier Nom="497E585B_ZN_LIQRLVPR_A_V_CS.pdf"/>
</Document>
<Document>
<Index Nom="TITLE" Valeur="58453B75_ZN_LIQRLVPR_A_V_ML"/>
<Index Nom="NO_ASSURE" Valeur="1406091"/>
<Index Nom="DEBUT_PERIODE" Valeur="09-07-2020"/>
<Index Nom="FIN_PERIODE" Valeur="08/08/2020"/>
<Index Nom="FREQUENCE_DECOMPTE" Valeur="MENS"/>
<Index Nom="LIBELLE_ORGANISME" Valeur="HUMANIS CCN OG"/>
<Index Nom="MONTANT_TOTAL" Valeur="0"/>
<Index Nom="DATE_GENERATION_DECOMPTE"09-07-2020/>
<Index Nom="POLE" Valeur="1ADP"/>
<Index Nom="CODE_ORGANISME" Valeur="1ADP"/>
<Index Nom="ALERTE_MAIL" Valeur="1"/>
<Fichier Nom="58453B75_ZN_LIQRLVPR_A_V_ML.pdf"/>
</Document>
</Documents>
【问题讨论】:
-
XML 中的哪些值需要递增? \\\顺便说一句,把这个
$renommage = % {$item.U6618_FILENAME.Split('.')[0]}改成$renommage = [System.IO.Path]::GetFileNameWithoutExtension($item.U6618_FILENAME) -
Hey Theo me again ,对不起,我不得不打破你一周前为我制作的 while 循环,并将它变成一个 foreach 循环。但现在我找不到实现你之前制作的计数器的方法,它工作得非常好。我的意思是在 .您上次调用了变量 $maxItemsPerXml 并使其 =3 以便在 csv 上工作;如果您需要更多信息,请询问
标签: powershell loops foreach count counter