我有一个csv文件,它有一个名为"art"的列:
sequence art last first address city st zip
-------- --- ---- ----- ------- ---- -- ---
1 3S Doe John 123 Any Street AnyTown
6 3S Doe John 128 Any Street AnyTown
2 OG Dow Jane 124 Any Street AnyTown
7 OG Dow Jane 129 Any Street AnyTown
3 OGF Cool Joe 125 Any Street AnyTown
8 OGF Cool Joe 130 Any Street AnyTown
4 SLV Cool Carol 126 Any Street AnyTown
9 SLV Cool Carol 131 Any Street AnyTown
5 SMP Bravo Johnny 127 Any Street AnyTown
10 SMP Bravo Johnny 132 Any Street AnyTown
我正在寻找一种将"art"列的值存储到变量中的方法。请耐心等待,因为我仍在学习PowerShell。这是我迄今为止的代码:
If (Test-Path D:mhWork_Auto_Printc1478_tpl_snapdataArt_cProofs.csn){
$source=Get-ChildItem "D:mhWork_Auto_Printc1478_tpl_snapdataArt_cProofs.csn" | select -Last 1
$artTag = 'D:mhWork_Auto_Printc1478_tpl_snapdataArt_cProofs.csn'
$artTag1 = Import-Csv $artTag | Select-Object -ExpandProperty art -First 1
$artTag2 = Import-Csv $artTag | Select-Object -ExpandProperty art -Second 2
$artTag3 = Import-Csv $artTag | Select-Object -ExpandProperty art -Third 3
$artTag4 = Import-Csv $artTag | Select-Object -ExpandProperty art -Fourth 4
$artTag5 = Import-Csv $artTag | Select-Object -ExpandProperty art -Fifth 5
$JobID = "TPL_" + ($aJobNum)
If (Test-Path cProofs0001.pdf){
Rename-Item cProofs0001.pdf "$($JobID)_$($artTag1)_cProofs.pdf"}
If (Test-Path cProofs0002.pdf){
Rename-Item cProofs0002.pdf "$($JobID)_$($artTag2)_cProofs.pdf"}
If (Test-Path cProofs0003.pdf){
Rename-Item cProofs0003.pdf "$($JobID)_$($artTag3)_cProofs.pdf"}
If (Test-Path cProofs0004.pdf){
Rename-Item cProofs0004.pdf "$($JobID)_$($artTag4)_cProofs.pdf"}
If (Test-Path cProofs0005.pdf){
Rename-Item cProofs0005.pdf "$($JobID)_$($artTag5)_cProofs.pdf"}
}
正如您在"art"列中看到的,有5个不同的值。代码运行良好,直到我通过$artTag1。所需的结果是重命名以下文件。
cProofs0001.pdf - to - 123456_TPL_3S_cProofs.pdf
cProofs0002.pdf - to - 123456_TPL_OG_cProofs.pdf
cProofs0003.pdf - to - 123456_TPL_OGF_cProofs.pdf
cProofs0004.pdf - to - 123456_TPL_SLV_cProofs.pdf
cProofs0005.pdf - to - 123456_TPL_SMP_cProofs.pdf
我想我可能需要使用get content或for each循环。
# load the entire csv into a variable
$csvFilepath = 'D:mhWork_Auto_Printc1478_tpl_snapdataArt_cProofs.csn'
$csvContent = Import-Csv -Path $csvFilepath
# get the values of the art column like you did with -ExpandProperty
$artValues = $csvContent | Select-Object -ExpandProperty art
# de-duplicate the list
$artTags = $artValues | Group-Object | Select-Object -ExpandProperty Name
# use array indexing to reference values in list
$JobID = "TPL_" + ($aJobNum) # unclear where $aJobNum comes from
If (Test-Path cProofs0001.pdf){
Rename-Item cProofs0001.pdf "$($JobID)_$($artTags[0])_cProofs.pdf"}
If (Test-Path cProofs0002.pdf){
Rename-Item cProofs0002.pdf "$($JobID)_$($artTags[1])_cProofs.pdf"}
If (Test-Path cProofs0003.pdf){
Rename-Item cProofs0003.pdf "$($JobID)_$($artTags[2])_cProofs.pdf"}
If (Test-Path cProofs0004.pdf){
Rename-Item cProofs0004.pdf "$($JobID)_$($artTags[3])_cProofs.pdf"}
If (Test-Path cProofs0005.pdf){
Rename-Item cProofs0005.pdf "$($JobID)_$($artTags[4])_cProofs.pdf"}
}
我不清楚CCD_ 1&等等以及CCD_ 2列中的值。唯一确定cProofs0001.pdf
与3S
关联的是.csv文件中的行顺序。顺序总是一样吗?