2016-12-02 55 views
1

作为Powershell的新手,我设法将脚本集中在一起。 这已经准备了CSV,我知道,下面的文件的预览:我想添加一个增量编号到现有的CSV Powershell

"Documentnummer","Versie","Status","Geocode","IDS datum","Documentgroep (Omsch)","Documenttype (Wrd)","Tekeningnummer" 
"550165","C","AB","008","19.07.2013","Themalagen OI","KS","008KS10" 
"550164","I","AB","008","26.03.2016","Themalagen OI","KS","008KS09" 
"550163","D","AB","008","19.07.2013","Themalagen OI","KS","008KS08" 

这正好为约2000行。 现在,我使用它来下载文件,下载时使用相同的csv创建文件名。 这里是问题,我想创建和额外的列,头,例如'Nummer'包含每行增加的数字;

Nummer 0001, 0002, 0003, ...., 0050, ...., 0105, ...., 2547 

我总是希望四位数字,所以它看起来是这样的:

"Nummer","Documentnummer","Versie","Status","Geocode","IDS datum","Documentgroep (Omsch)","Documenttype (Wrd)","Tekeningnummer" 
"0001","550165","C","AB","008","19.07.2013","Themalagen OI","KS","008KS10" 
"0002","550164","I","AB","008","26.03.2016","Themalagen OI","KS","008KS09" 
... 
"0108","550163","D","AB","008","19.07.2013","Themalagen OI","KS","008KS08" 

我尝试了两种方式,并都失败,创建一个递增的数字它的加入到CSV和创建与一个CSV正确的数字,并合并两个csv的。

帮助表示赞赏! (以及荷兰的头名对不起)

在Windows 7 64位系统中使用PowerShell 3.0

更新,代码我用两个文件合并:

$drawinfo = Import-Csv $downloads\${drawtype}_DIR_AUTO_FILTER.csv | ConvertTo-Csv -NoTypeInformation 
$numberinfo = Import-Csv "$BBKSDIR\Related files\Incremental_number.csv" | ConvertTo-Csv -NoTypeInformation 

第一个包含大量数据,第二个只包含数字。

[array]$allinfo = "{0},{1}" -f $numberinfo[0],$drawinfo[0] 
[array]$allinfo += "`r`n{0},{1}" -f $numberinfo[1],$drawinfo[1] 
$allinfo 

在这里,我第一次拿到这两个文件的标题行,第二行中我希望得到所有其他行,但我只获得了第2行(第1个数据行)。

执行$ allinfo现在让我:

“Nummer”, “Documentnummer”, “Versie”, “状态”, “地理编码”, “IDS数据”, “Documentgroep(Omsch)”,” Documenttype(Wrd)“,”Tekeningnummer“ ”0001“,”550165“,”C“,”AB“,”008“,”19.07.2013“,”Themalagen OI“,”KS“,”008KS10“

+0

你能分享任何你已经尝试到现在的代码? –

+0

正如你可以在更新中看到的,我亲近(或者我想成为:))。 这个数字是作为第一列添加的,第一个数据行正是我想要的,第一列数字是四位数,但是对于所有其他行都应该这样。 –

回答

0

像这样的东西应该给你一个关于如何做到这一点提示:

$csv = Import-Csv "D:\temp\test.csv" 
$global:i = 0; $csv | Select-Object @{ Name = 'Nummer'; Expression = { $global:i.ToString("0000"); $global:i += 1 } }, * | Export-Csv "D:\temp\test2.csv" 

这是基于计算的属性。

+0

对不起。我认为这是一个错字 – Matt

0

试试这个

$script:cpt=0 
import-csv "C:\temp10\report.csv" | 
      select @{N="Nummer";E={$script:cpt++;"{0:d4}" -f $script:cpt}}, * | 
         export-csv "C:\temp10\report2.csv" -NoTypeInformation 
+1

与响应波纹管有什么区别? –

+0

没有什么区别,不要冒犯你,只是另一种方法,格式化nummer并使用$ script vs $ global,+ ++在性能上更好,我优先考虑格式以获得更好的可见性,但-NoTypeInformation很重要(你有忘记了) – Esperento57