I would like to modify the attached script so that when it sees 01-ABCDA, or 01ABCDB, 'and' if sees either 01230c, or 01232 in position 100, that it will change the last character from whatever 3 digits it sees at the end of those lines, to a ,008.
No other functions in the script are needed, so I am sure many of the lines will have to be removed.....
$inFolder = '\\saved\data'
$outSuffix = '_rev'
$referenceCount = 0
$row = 0
Get-ChildItem -Path $inFolder -Filter *.csv | Where-Object {$_.BaseName -notmatch "$($outSuffix)\Z"} | ForEach-Object {
$outFile = Join-Path -Path $_.DirectoryName -ChildPath "$($_.BaseName)$($outSuffix)$($_.Extension)"
$saveFile = $false
Write-Host "Processing '$($_.Name)' ..."
$content = Get-Content -Path $_.FullName | ForEach-Object {
$fieldChanged = $false
$row++
$fields = $_.Split(',')
If ($referenceCount -eq 0) {$referenceCount = $fields.Count}
If ($fields.Count -ne $referenceCount) {
Throw "Field count in line $($row) is incorrect (is: $($fields.Count), expected: $($referenceCount))!"
}
$fields = $fields + ''
$old3 = $fields[3]
If ($addLastField.Keys -contains $fields[3]) {
$fields[-1] = $addLastField[$fields[3]]
$fieldChanged = $true
}
If ($fieldChanged) {
Write-Host " line $($row): $($old3) [$($fields[26])]) --> $($fields[3]); last: $($fields[-1])"
$saveFile = $true
}
$fields -join ','
}
If ($saveFile) {
$content | Set-Content -Path $outFile
Write-Host "Changes written to $($outFile)."
} Else {
Write-Host "No changes found."
}
}
Select all Open in new window
This is the input script in a .csv file.
5,A,01234,01-ABCDA,Y,1251/
2,1772345,
,20181003,
20181107,2
0181114,,1
2345678900
00,COMP ACCOUNTS PAYABLE,123 ROAD WAY,,TREEWAY,FL,01234-5678
,,,,123456
4870004,So
mewhere Warehouse,200 Treeview Court NW,,Everywhere,GA,12345-12
34,,,018-4
41-5522,41
245,ABCORP
BC,,USD,N,
,,,,,,,,,N
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,00987894
561230,012
30c,152324
,STEEL,,,,
123.00,US,
0.00,US,0.
00,US,10.5
000,0.0000
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,101
5,A,01234,01-ABCDB,Y,1251/
2,1772345,
,20181003,
20181107,2
0181114,,1
2345678900
00,COMP ACCOUNTS PAYABLE,123 ROAR WAY,,TREEWAY,FL,01234-5678
,,,,123456
4870004,So
mewhere Warehouse,200 Treeview Court NW,,Everywhere,GA,12345-12
34,,,018-4
41-5522,41
245,ABCORP
BC,,USD,N,
,,,,,,,,,N
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,00987894
561560,012
32,152345,
WOOD,,,,78
9.00,US,0.
00,US,0.00
,US,10.510
0,0.0000,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,102
5,A,01234,67891,Y,1253/2,1
775478,,20
181003,201
81107,2018
1114,,1234
567890000,
OTHERCOMP ACCOUNTS PAYABLE,123 ROAD WAY,,FOREST,TX,01234-5678,
,,,1234564
870004,Ano
ther Warehouse, 300 Apt View Court NW,Specific Place,TX,12345-5678,,,018-
441-5522,4
1245,DEFOR
PBC,,USD,N
,,,,,,,,,,
N,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,0098789
4564560,00
456,152322
,CANVAS,,,
,123.00,US
,0.00,US,0
.00,US,10.
5200,0.000
0,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,103
5,A,01234,55555,Y,1254/2,1
771234,,20
181003,201
81107,2018
1114,,1234
567890000,
OTHEROTHER
COMP ACCOUNTS PAYABLE,123 ROAD WAY,,JUNGLE,GA,01234-9999,
,,,1234564
870004,BAn
other Warehouse, 400 Sea View Court NW,AnotherSpecific Place,GA,12345-9999,,,018-
441-5522,4
1245,GHIOR
PBC,,USD,N
,,,,,,,,,,
N,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,0098789
4564560,00
456,152322
,CANVAS,,,
,123.00,US
,0.00,US,0
.00,US,10.
5200,0.000
0,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,104