我想向现有CSV Powershell添加一个增量编号
作为Powershell的新手,我设法编写了一个脚本。 这已经准备了一个csv,我知道,下面的文件预览:我想向现有CSV Powershell添加一个增量编号,powershell,csv,Powershell,Csv,作为Powershell的新手,我设法编写了一个脚本。 这已经准备了一个csv,我知道,下面的文件预览: "Documentnummer","Versie","Status","Geocode","IDS datum","Documentgroep (Omsch)","Documenttype (Wrd)","Tekeningnummer" "550165","C","AB","008","19.07.2013","Themalagen OI","KS","008KS10" "550164",
"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创建文件名。
问题是,我想创建一个额外的列和标题,例如“numer”,每行包含一个递增的数字
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 x64上使用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
这里我首先得到两个文件的标题行,在第二行我想得到所有其他行,但我只得到第二行(第一个数据行)
执行$allinfo现在让我:
“Nummer”、“Documentnummer”、“Versione”、“Status”、“Geocode”、“IDS数据”、“Documentgroep(Omsch)”、“Documenttype(Wrd)”、“Tekeningnummer”
“0001”、“550165”、“C”、“AB”、“008”、“2013年7月19日”、“马来西亚国际”、“KS”、“008KS10”
类似这样的东西应该会给你一个如何做的提示:
$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"
这是基于计算的属性。试试这个
$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
你能分享你到现在为止尝试过的任何东西的代码吗?正如你在更新中看到的,我有点接近了(或者我想成为O:)。数字被添加为第一列,第一个数据行正是我想要的,第一列的数字是四位数字,但其他所有行都应该如此。对此,我深表歉意。我假设这是一个输入错误,下面的回答有什么区别?不是真正的区别,不要冒犯你,只是另一种方法,格式化nummer,使用$script vs$global,++优于+=在性能上,我更喜欢-format以获得更好的可视性,但是-notype信息很重要(你已经忘记了这一点)