Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
script j
<#
.SYNOPSIS
voegt de export csv bestanden vanuit _ toe aan de terugkoppeling.csv file die wordt ingelezen in Access (_).
.DESCRIPTION
Logische opbouw:
1 Files verplaatsen voor het bewerken
Files die voldoen aan verw*.csv (waarbij de * geldt als wildcard waarbij alle combinaties en lengtes van karakters gelden) worden verplaats van de share \\_\_\ naar de directory .\_.
Dit doen we om te voorkomen dan bij het verplaatsen van de bestanden verderop in het script geen bestanden worden verplaats die nog niet izjn ingelezen omdat we niet kunnen garanderen dat er geen bestand bij komt vanuit _ in de periode van inlezen en verplaatsen.
2 CSV files toevoegen en selectie op order LP nummer.
We importeren (met append wat betekent dat ze worden toegevoegd en de file niet wordt overschreven) de csv bestanden in het bestand TKv2_FirstImport.csv.
Tevens filteren we bij inlezen op het veld Order LP nummer. Alleen die orders die beginnen met een S en waarvan het order nummer niet leeg is worden meegenomen.
3 De csv ontdubbelen
na de eerste inlezing in TKv2_FirstImport.csv waarbij regels worden toegevoegd, wordt de output hiervan in een file (TKv2Uniek.csv) gestopt die wordt overschreven.
In deze file zijn alleen de meest recente unieke Order LP's opgenomen. Dit doen we door te groeperen op Order LP en alleen de meest recente te pakken om weg te schrijven.
4 Tekstuele bewerkingen
Speciale karakters als wildcards zijn noemenswaardig moeilijk te vangen als reguliere karakters. Het is nodig om de wildcard in literal quotes te zetten en in een string te stoppen om deze correct te kunnen vermelden als regulier karakter in de volgende bewerking.
Hierna wordt het object cvs wat binnen Powershell eigenschappen heeft als kolommen en rijen (waar we op selecteren) losgelaten en beschouwen we het als een tekst file waar we tekstuele bewerkingen op uitvoeren. Dit betreft vooral punctuatie waar de Access import niet mee kan omgaan.
5 Files verplaatsen
De files verplaatsen voor en achteraf de bewerkingen doen we om absoluut zeker te zijn dat er geen files worden verplaatst die nog niet zijn ingelezen.
6 Opschonen
Logische constructie warabij ik aan de hand van de dag bepaal of er 2 of 3 dagen moet worden teruggegaan. ALs er een zondag tussen zit ga ik 3 dagen teurg, anders 2. Alle orders van voor de datum min die dagen worden verwijders.
Hierbij hou ik geen rekening met vakantiedagen.
.NOTES
#>
#1 Files verplaatsen voor het bewerken
Get-ChildItem -Path \\_\_\ -Filter "verw*.csv" | Move-Item -Destination \\_\_\TKv2FirstImport\ -Force
#2 CSV files toevoegen en selectie op order LP nummer.
Get-ChildItem -path \\_\_\TKv2FirstImport -Filter verwer*.csv | select-object -ExpandProperty fullname | Import-Csv -Delimiter ";" -Encoding Default | where-Object {$_."order lp" -like "S*" -and $_."order lp" -notlike ""} | Export-Csv \\_\_\TKv2_FirstImport.csv -Delimiter ";" -NoTypeInformation -Append
#3 De csv ontdubbelen
Import-Csv \\_\_\TKv2_FirstImport.csv -Delimiter ";" -Encoding Default | Group-Object -Property "Order LP" | ForEach-Object {$_.group | Sort-Object -Property "datum Export", "Tijd Export" | Select-Object -last 1} | export-csv TKv2Uniek.csv -Delimiter ";" -NoTypeInformation
#4 Tekstuele ewerkingen
$asterix = '******'
Get-Content \\_\_\TKv2Uniek.csv | Foreach-Object {$_ -replace '"', '' -replace '00-00-0000', '' -replace '.0;ENM', ',0;ENM' -replace '.1;ENM', ',1;ENM' -replace '.2;ENM', ',2;ENM' -replace '.3;ENM', ',3;ENM' -replace '.4;ENM', ',4;ENM' -replace '.5;ENM', ',5;ENM' -replace '.6;ENM', ',6;ENM' -replace '.7;ENM', ',7;ENM' -replace '.8;ENM', ',8;ENM' -replace '.9;ENM', ',9;ENM' -replace '$asterix', ''} | out-file -FilePath \\_\_\Terugkoppeling.csv
#5 Files verplaatsen
Get-ChildItem -Path \\_\_\TKv2FirstImport\ -Filter verwer*.csv | Move-Item -Destination \\_\_\TKv2Imported\ -Force
#6 Opschonen
if ((Get-Date).DayOfWeek -eq "Monday" -or (Get-Date).DayOfWeek -eq "Tuesday" -and (Get-Date).Hour -eq "0")
{
Import-Csv \\_\_\TKv2_FirstImport.csv -Delimiter ";" | where-object {(Get-Date $_."datum export") -ge ((Get-Date).adddays(-3))} | Export-Csv \\_\_\TKv2_opschoontest.csv -Delimiter ";"
}
elseif ((Get-Date).Hour -eq "0")
{
Import-Csv \\_\_\TKv2_FirstImport.csv -Delimiter ";" | where-object {(Get-Date $_."datum export") -ge ((Get-Date).adddays(-2))} | Export-Csv \\_\_\TKv2_opschoontest.csv -Delimiter ";"
}
else
{
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.