1515 lines
61 KiB
PowerShell
1515 lines
61 KiB
PowerShell
Function Main
|
|
{
|
|
Write-Host "Programmstart"
|
|
|
|
# Überprüfen, ob Einstellungsdatei vorhanden, ggf. erstellen
|
|
$AktuellesVerzeichnis = Get-Location
|
|
$PfadEinstellungsDatei = $("$AktuellesVerzeichnis\" + "EinstellungenSkriptKonvertierung.txt")
|
|
#Write-Host "AktuellesVerzeichnis: " $AktuellesVerzeichnis
|
|
#Write-Host "Einstellungsdatei: " $PfadEinstellungsDatei
|
|
|
|
if (Test-Path $PfadEinstellungsDatei) {
|
|
#Es gibt eine Datei mit den Einstellungen -> auslesen
|
|
#Todo: Checken, ob Inhalte plausibel sind -> ggf. neue mit Standardwerten erstellen!
|
|
$EinstellungsInhalte = Get-Content $PfadEinstellungsDatei
|
|
Write-Host "Einstellungsinhalte: " $EinstellungsInhalte
|
|
|
|
$StartPfad = $EinstellungsInhalte[0]
|
|
foreach ($EinstellungsZeile in $EinstellungsInhalte) {
|
|
$EinstellungsInhalt = $EinstellungsZeile.Split("|")
|
|
if ($EinstellungsInhalt[0] -eq "Datei") {
|
|
$ZielDateien += @([PSCustomObject]@{
|
|
PrefixEingang = $EinstellungsInhalt[1]
|
|
PrefixAusgang = $EinstellungsInhalt[2]
|
|
DateiName = $EinstellungsInhalt[3]
|
|
WandlungsTyp = $EinstellungsInhalt[4]
|
|
})
|
|
}
|
|
}
|
|
#Write-Host "Zieldateien: " $ZielDateien
|
|
}
|
|
else {
|
|
#Es gibt keine Datei mit den Einstellungen -> erstellen
|
|
#Todo: Umbauen: Eintraege via EinstellungsDateiAendern hinzufuegen!!!
|
|
|
|
# Mögliches Problem mit der Funktion "StartVerzeichnisAendern". Überprüfen!
|
|
|
|
New-Item $PfadEinstellungsDatei -ItemType File
|
|
|
|
$StartPfad = $AktuellesVerzeichnis
|
|
$ZielDateien = @([PSCustomObject]@{
|
|
PrefixEingang = "E"
|
|
PrefixAusgang = "A"
|
|
DateiName = "EA_[Ursprungsdatei]"
|
|
WandlungsTyp = "Simpel"
|
|
})
|
|
|
|
$ZielDateien += @([PSCustomObject]@{
|
|
PrefixEingang = "%I"
|
|
PrefixAusgang = "%Q"
|
|
DateiName = "DIDQ_[Ursprungsdatei]"
|
|
WandlungsTyp = "TIA"
|
|
})
|
|
|
|
Add-Content $PfadEinstellungsDatei $($StartPfad)
|
|
Add-Content $PfadEinstellungsDatei $("Datei|" + $ZielDateien[0].PrefixEingang + "|" + $ZielDateien[0].PrefixAusgang + "|" + $ZielDateien[0].DateiName + "|" + $ZielDateien[0].WandlungsTyp)
|
|
Add-Content $PfadEinstellungsDatei $("Datei|" + $ZielDateien[1].PrefixEingang + "|" + $ZielDateien[1].PrefixAusgang + "|" + $ZielDateien[1].DateiName + "|" + $ZielDateien[1].WandlungsTyp)
|
|
}
|
|
|
|
GUI $StartPfad $ZielDateien
|
|
|
|
}
|
|
|
|
|
|
|
|
Function GUI ($StartPfad, $ZielDateien)
|
|
{
|
|
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
|
|
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
|
|
|
|
# Eigenschaften Fenster
|
|
$Fenster = New-Object System.Windows.Forms.Form
|
|
$Fenster.Size = New-Object System.Drawing.Size(940,660) #Breite, Höhe
|
|
$Fenster.StartPosition = "CenterScreen"
|
|
$Fenster.KeyPreview = $true # was macht das?
|
|
$Fenster.MaximumSize = $Fenster.Size # legt fest, dass Größe des Fensters nicht verändert werden kann
|
|
$Fenster.MinimumSize = $Fenster.Size
|
|
$Fenster.Text = "Dateikonvertierer txt zu xlsx"
|
|
|
|
# Eigenschaften Tabs
|
|
$TabBasis = New-Object System.Windows.Forms.TabControl
|
|
$TabBasis.Location = New-Object System.Drawing.Size(10,10)
|
|
$TabBasis.Size = New-Object System.Drawing.Size(900,600)
|
|
$TabBasis.DataBindings.DefaultDataSourceUpdateMode = 0 # Was macht das?
|
|
$Fenster.Controls.Add($TabBasis)
|
|
|
|
# Tab: TXT-Pfad auswaehlen
|
|
$TabSeiteTXTAuswaehlen = New-Object System.Windows.Forms.TabPage
|
|
$TabSeiteTXTAuswaehlen.TabIndex = 0
|
|
$TabSeiteTXTAuswaehlen.UseVisualStyleBackColor = $true
|
|
$TabSeiteTXTAuswaehlen.Text = "txt-Datei Auswaehlen"
|
|
#Paddings
|
|
$TabSeiteTXTAuswaehlen.DataBindings.DefaultDataSourceUpdateMode = 0
|
|
$TabBasis.Controls.Add($TabSeiteTXTAuswaehlen)
|
|
|
|
# TXTPfadFeld
|
|
$TXTPfadFeld = New-Object System.Windows.Forms.TextBox
|
|
$TXTPfadFeld.Location = New-Object System.Drawing.Size(10,10)
|
|
$TXTPfadFeld.Size = New-Object System.Drawing.Size(860,20)
|
|
$TXTPfadFeld.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionPfadFeld "txt" $Taste
|
|
})
|
|
$TabSeiteTXTAuswaehlen.Controls.Add($TXTPfadFeld)
|
|
|
|
# TXTListeOrdnernamen
|
|
$TXTListeOrdnernamen = New-Object System.Windows.Forms.ListBox
|
|
$TXTListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40)
|
|
$TXTListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20)
|
|
$TXTListeOrdnernamen.Height = 450
|
|
$TXTListeOrdnernamen.Font = New-Object System.Drawing.Font("Arial",12,[System.Drawing.FontStyle]::Regular)
|
|
$TXTListeOrdnernamen.Add_DoubleClick({
|
|
# Variablen bestimmen zur Übergabe
|
|
$Auswahl = $TXTListeOrdnernamen.SelectedItem
|
|
$Pfad = $TXTPfadFeld.Text
|
|
# Write-Host "Gewählter Ordner/ Datei: " $Auswahl
|
|
# Write-Host "Vorheriger Pfad: " $TXTPfad
|
|
|
|
# Pfad aktualisieren
|
|
VerzeichnisAuswaehlen "txt" $Pfad $Auswahl
|
|
})
|
|
$TXTListeOrdnernamen.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionListeOrdnernamen "txt" $Taste
|
|
})
|
|
$TabSeiteTXTAuswaehlen.Controls.Add($TXTListeOrdnernamen)
|
|
|
|
# ZurückButton
|
|
$TXTZurueckButton = New-Object System.Windows.Forms.Button
|
|
$TXTZurueckButton.Location = New-Object System.Drawing.Size(10,500)
|
|
$TXTZurueckButton.Size = New-Object System.Drawing.Size(100,30)
|
|
$TXTZurueckButton.Text = "Zurueck"
|
|
$TXTZurueckButton.Add_Click({
|
|
# Write-Host "Pfad ausgabe: " $TXTPfadFeld.Text
|
|
$Pfad = $TXTPfadFeld.Text
|
|
|
|
#Pfad aktualisieren
|
|
VerzeichnisZurueck "txt" $Pfad
|
|
})
|
|
$TXTZurueckButton.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionButtons "txt" $Taste
|
|
})
|
|
$TabSeiteTXTAuswaehlen.Controls.Add($TXTZurueckButton)
|
|
|
|
# AuswaehlenButton
|
|
$TXTAuswaehlenButton = New-Object System.Windows.Forms.Button
|
|
$TXTAuswaehlenButton.Location = New-Object System.Drawing.Size(750,500)
|
|
$TXTAuswaehlenButton.Size = New-Object System.Drawing.Size(100,30)
|
|
$TXTAuswaehlenButton.Text = "Auswaehlen"
|
|
$TXTAuswaehlenButton.Add_Click({
|
|
# Variablen bestimmen zur Übergabe
|
|
$Auswahl = $TXTListeOrdnernamen.SelectedItem
|
|
$Pfad= $TXTPfadFeld.Text
|
|
# Write-Host "Gewählter Ordner/ Datei: " $Auswahl
|
|
# Write-Host "Vorheriger Pfad: " $TXTPfad
|
|
|
|
# Pfad aktualisieren
|
|
VerzeichnisAuswaehlen "txt" $Pfad $Auswahl
|
|
})
|
|
$TXTAuswaehlenButton.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionButtons "txt" $Taste
|
|
})
|
|
$TabSeiteTXTAuswaehlen.Controls.Add($TXTAuswaehlenButton)
|
|
|
|
$A = AnzeigeAktualisieren "txt" $StartPfad # Ohne dem Aufruf kann kein Startverzeichnis übergeben werden. Wird der Aufruf keiner Variable zugewiesen verursacht dies Fehler bei der Rückgabe.
|
|
|
|
#$TXTDatei = $TXTPfadFeld.Text
|
|
|
|
# Tab: Zielverzeichnis auswaehlen
|
|
$TabSeiteZielVerzeichnisAuswaehlen = New-Object System.Windows.Forms.TabPage
|
|
$TabSeiteZielVerzeichnisAuswaehlen.TabIndex = 1
|
|
$TabSeiteZielVerzeichnisAuswaehlen.UseVisualStyleBackColor = $true
|
|
$TabSeiteZielVerzeichnisAuswaehlen.Text = "Zielverzeichnis Auswaehlen"
|
|
#Paddings
|
|
$TabSeiteZielVerzeichnisAuswaehlen.DataBindings.DefaultDataSourceUpdateMode = 0
|
|
$TabBasis.Controls.Add($TabSeiteZielVerzeichnisAuswaehlen)
|
|
|
|
# PfadFeld
|
|
$VERPfadFeld = New-Object System.Windows.Forms.TextBox
|
|
$VERPfadFeld.Location = New-Object System.Drawing.Size(10,10)
|
|
$VERPfadFeld.Size = New-Object System.Drawing.Size(860,20)
|
|
$VERPfadFeld.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionPfadFeld "ver" $Taste
|
|
})
|
|
$TabSeiteZielVerzeichnisAuswaehlen.Controls.Add($VERPfadFeld)
|
|
|
|
# ListeOrdnernamen
|
|
$VERListeOrdnernamen = New-Object System.Windows.Forms.ListBox
|
|
$VERListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40)
|
|
$VERListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20)
|
|
$VERListeOrdnernamen.Height = 450
|
|
$VERListeOrdnernamen.Font = New-Object System.Drawing.Font("Arial",12,[System.Drawing.FontStyle]::Regular)
|
|
$VERListeOrdnernamen.Add_DoubleClick({
|
|
# Variablen bestimmen zur Übergabe
|
|
$Auswahl = $VERListeOrdnernamen.SelectedItem
|
|
$Pfad = $VERPfadFeld.Text
|
|
# Write-Host "Gewählter Ordner/ Datei: " $Auswahl
|
|
# Write-Host "Vorheriger Pfad: " $VERPfad
|
|
|
|
# Pfad aktualisieren
|
|
VerzeichnisAuswaehlen "ver" $Pfad $Auswahl
|
|
})
|
|
$VERListeOrdnernamen.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionListeOrdnernamen "ver" $Taste
|
|
})
|
|
$TabSeiteZielVerzeichnisAuswaehlen.Controls.Add($VERListeOrdnernamen)
|
|
|
|
# ZurückButton
|
|
$VERZurueckButton = New-Object System.Windows.Forms.Button
|
|
$VERZurueckButton.Location = New-Object System.Drawing.Size(10,500)
|
|
$VERZurueckButton.Size = New-Object System.Drawing.Size(100,30)
|
|
$VERZurueckButton.Text = "Zurueck"
|
|
$VERZurueckButton.Add_Click({
|
|
# Write-Host "Pfad ausgabe: " $VERPfadFeld.Text
|
|
$Pfad = $VERPfadFeld.Text
|
|
|
|
#Pfad aktualisieren
|
|
VerzeichnisZurueck "ver" $Pfad
|
|
})
|
|
$VERZurueckButton.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionButtons "ver" $Taste
|
|
})
|
|
$TabSeiteZielVerzeichnisAuswaehlen.Controls.Add($VERZurueckButton)
|
|
|
|
# AuswaehlenButton
|
|
$VERAuswaehlenButton = New-Object System.Windows.Forms.Button
|
|
$VERAuswaehlenButton.Location = New-Object System.Drawing.Size(630,500)
|
|
$VERAuswaehlenButton.Size = New-Object System.Drawing.Size(100,30)
|
|
$VERAuswaehlenButton.Text = "Auswaehlen"
|
|
$VERAuswaehlenButton.Add_Click({
|
|
# Variablen bestimmen zur Übergabe
|
|
$Auswahl = $VERListeOrdnernamen.SelectedItem
|
|
$Pfad = $VERPfadFeld.Text
|
|
# Write-Host "Gewählter Ordner/ Datei: " $Auswahl
|
|
# Write-Host "Vorheriger Pfad: " $VERPfad
|
|
|
|
if ($($VERListeOrdnernamen.Items[0] -eq ""))
|
|
{
|
|
VERAuswahlBestaetigt $Pfad $Auswahl
|
|
}
|
|
else
|
|
{
|
|
# Pfad aktualisieren
|
|
VerzeichnisAuswaehlen "ver" $Pfad $Auswahl
|
|
}
|
|
})
|
|
$VERAuswaehlenButton.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionButtons "ver" $Taste
|
|
})
|
|
$TabSeiteZielVerzeichnisAuswaehlen.Controls.Add($VERAuswaehlenButton)
|
|
|
|
# BestaetigenButton
|
|
$VERBestaetigenButton = New-Object System.Windows.Forms.Button
|
|
$VERBestaetigenButton.Location = New-Object System.Drawing.Size(750,500)
|
|
$VERBestaetigenButton.Size = New-Object System.Drawing.Size(100,30)
|
|
$VERBestaetigenButton.Text = "Bestaetigen"
|
|
$VERBestaetigenButton.Add_Click({
|
|
$Auswahl = $VERListeOrdnernamen.SelectedItem
|
|
$Pfad = $VERPfadFeld.Text
|
|
|
|
VERAuswahlBestaetigt $Pfad $Auswahl
|
|
})
|
|
$VERBestaetigenButton.Add_KeyDown({
|
|
# Reaktion bei gedrückter Taste
|
|
$Taste = $_.KeyCode
|
|
TastenReaktionButtons "ver" $Taste
|
|
})
|
|
$TabSeiteZielVerzeichnisAuswaehlen.Controls.Add($VERBestaetigenButton)
|
|
|
|
# Dieser Funktionsaufruf zerstört die Rückgabe, wenn er keiner Variable zugewiesen wird
|
|
#$A = AnzeigeAktualisieren "ver" $TXTPfadFeld.Text
|
|
|
|
#$ZielVerzeichnis = $VERPfadFeld.Text
|
|
|
|
# Tab: Ausgabe Fortschritt
|
|
$TabSeiteFortschrittsanzeige = New-Object System.Windows.Forms.TabPage
|
|
$TabSeiteFortschrittsanzeige.TabIndex = 2
|
|
$TabSeiteFortschrittsanzeige.UseVisualStyleBackColor = $true
|
|
$TabSeiteFortschrittsanzeige.Text = "Bearbeitungsfortschritt"
|
|
#Paddings
|
|
$TabSeiteFortschrittsanzeige.DataBindings.DefaultDataSourceUpdateMode = 0
|
|
$TabBasis.Controls.Add($TabSeiteFortschrittsanzeige)
|
|
|
|
$FATextfeld1 = New-Object System.Windows.Forms.Label
|
|
$FATextfeld1.Location = New-Object System.Drawing.Size(10,10)
|
|
$FATextfeld1.Size = New-Object System.Drawing.Size(200,20)
|
|
$FATextfeld1.Text = "Aktuelle Aufgabe"
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeld1)
|
|
|
|
$FATextfeld2 = New-Object System.Windows.Forms.Label
|
|
$FATextfeld2.Location = New-Object System.Drawing.Size(300,10)
|
|
$FATextfeld2.Size = New-Object System.Drawing.Size(430,20)
|
|
$FATextfeld2.Text = "Erledigte Aufgaben"
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeld2)
|
|
|
|
$FATextfeldAktuelleAufgabe = New-Object System.Windows.Forms.Label
|
|
$FATextfeldAktuelleAufgabe.Location = New-Object System.Drawing.Size(10,40)
|
|
$FATextfeldAktuelleAufgabe.Size = New-Object System.Drawing.Size(280,60)
|
|
$FATextfeldAktuelleAufgabe.Text = "txt-Datei auswaehlen"
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeldAktuelleAufgabe)
|
|
|
|
$FAListeErledigteAufgaben = New-Object System.Windows.Forms.ListBox
|
|
$FAListeErledigteAufgaben.Location = New-Object System.Drawing.Size(300,40)
|
|
$FAListeErledigteAufgaben.Size = New-Object System.Drawing.Size(430,20)
|
|
$FAListeErledigteAufgaben.Height = 150
|
|
$FAListeErledigteAufgaben.Font = New-Object System.Drawing.Font("Arial",12,[System.Drawing.FontStyle]::Regular)
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FAListeErledigteAufgaben)
|
|
|
|
$FATextfeld3 = New-Object System.Windows.Forms.Label
|
|
$FATextfeld3.Location = New-Object System.Drawing.Size(10,100)
|
|
$FATextfeld3.Size = New-Object System.Drawing.Size(430,20)
|
|
$FATextfeld3.Text = "Fortschritt Excel-Dateien beschreiben"
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeld3)
|
|
|
|
$FAFortschrittsbar = New-Object System.Windows.Forms.ProgressBar
|
|
$FAFortschrittsbar.Location = New-Object System.Drawing.Size(10,120)
|
|
$FAFortschrittsbar.Size = New-Object System.Drawing.Size(260,30)
|
|
#$FAFortschrittsbar.Name = "Fortschrittsanzeige"
|
|
$FAFortschrittsbar.Value = 0
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FAFortschrittsbar)
|
|
|
|
$FATextfeldRealwertFortschrittsbar = New-Object System.Windows.Forms.Label # Wird verwendet, aber VSC erkennt das nicht
|
|
|
|
$FATextfeld4 = New-Object System.Windows.Forms.Label
|
|
$FATextfeld4.Location = New-Object System.Drawing.Size(10,170)
|
|
$FATextfeld4.Size = New-Object System.Drawing.Size(140,20)
|
|
$FATextfeld4.Text = "Bearbeitete Eintraege:"
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeld4)
|
|
|
|
$FATextfeld5 = New-Object System.Windows.Forms.Label
|
|
$FATextfeld5.Location = New-Object System.Drawing.Size(10,200)
|
|
$FATextfeld5.Size = New-Object System.Drawing.Size(100,20)
|
|
$FATextfeld5.Text = "Gesamteintraege:"
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeld5)
|
|
|
|
$FATextfeldBearbeiteteEintraege = New-Object System.Windows.Forms.Label
|
|
$FATextfeldBearbeiteteEintraege.Location = New-Object System.Drawing.Size(170,170)
|
|
$FATextfeldBearbeiteteEintraege.Size = New-Object System.Drawing.Size(430,20)
|
|
$FATextfeldBearbeiteteEintraege.Text = "0"
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeldBearbeiteteEintraege)
|
|
|
|
$FATextfeldGesamtEintraege = New-Object System.Windows.Forms.Label
|
|
$FATextfeldGesamtEintraege.Location = New-Object System.Drawing.Size(170,200)
|
|
$FATextfeldGesamtEintraege.Size = New-Object System.Drawing.Size(430,20)
|
|
$FATextfeldGesamtEintraege.Text = $($Ursprungdatei.Length)
|
|
$TabSeiteFortschrittsanzeige.Controls.Add($FATextfeldGesamtEintraege)
|
|
|
|
# Tab: Ausgabe doppelte Ein- und Ausgänge sowie nicht zurordnebare Betriebsmittel
|
|
$TabSeiteDuplikate = New-Object System.Windows.Forms.TabPage
|
|
$TabSeiteDuplikate.TabIndex = 3
|
|
$TabSeiteDuplikate.UseVisualStyleBackColor = $true
|
|
$TabSeiteDuplikate.Text = "Doppelte Ein- und Ausgaenge"
|
|
#Paddings
|
|
$TabSeiteDuplikate.DataBindings.DefaultDataSourceUpdateMode = 0
|
|
$TabBasis.Controls.Add($TabSeiteDuplikate)
|
|
|
|
$DPTextfeld1 = New-Object System.Windows.Forms.Label
|
|
$DPTextfeld1.Location = New-Object System.Drawing.Size(10,10)
|
|
$DPTextfeld1.Size = New-Object System.Drawing.Size(275,40)
|
|
$DPTextfeld1.Text = "Bei den Eingaengen gibt es folgende Duplikate: "
|
|
$TabSeiteDuplikate.Controls.Add($DPTextfeld1)
|
|
|
|
$DPListeEingaenge = New-Object System.Windows.Forms.DataGridView
|
|
$DPListeEingaenge.Location = New-Object System.Drawing.Size(10,60)
|
|
$DPListeEingaenge.Size = New-Object System.Drawing.Size(275,20)
|
|
$DPListeEingaenge.Height = 430
|
|
$DPListeEingaenge.ColumnCount = 2
|
|
$DPListeEingaenge.ColumnHeadersVisible = $true
|
|
$DPListeEingaenge.Columns[0].Name = "Zeile"
|
|
$DPListeEingaenge.Columns[1].Name = "Kennzeichnung"
|
|
$TabSeiteDuplikate.Controls.Add($DPListeEingaenge)
|
|
|
|
$DPTextfeld2 = New-Object System.Windows.Forms.Label
|
|
$DPTextfeld2.Location = New-Object System.Drawing.Size(295,10)
|
|
$DPTextfeld2.Size = New-Object System.Drawing.Size(275,40)
|
|
$DPTextfeld2.Text = "Bei den Ausgaengen gibt es folgende Duplikate: "
|
|
$TabSeiteDuplikate.Controls.Add($DPTextfeld2)
|
|
|
|
$DPListeAusgaenge = New-Object System.Windows.Forms.DataGridView
|
|
$DPListeAusgaenge.Location = New-Object System.Drawing.Size(295,60)
|
|
$DPListeAusgaenge.Size = New-Object System.Drawing.Size(275,20)
|
|
$DPListeAusgaenge.Height = 430
|
|
$DPListeAusgaenge.ColumnCount = 2
|
|
$DPListeAusgaenge.ColumnHeadersVisible = $true
|
|
$DPListeAusgaenge.Columns[0].Name = "Zeile"
|
|
$DPListeAusgaenge.Columns[1].Name = "Kennzeichnung"
|
|
$TabSeiteDuplikate.Controls.Add($DPListeAusgaenge)
|
|
|
|
$DPTextfeld3 = New-Object System.Windows.Forms.Label
|
|
$DPTextfeld3.Location = New-Object System.Drawing.Size(580,10)
|
|
$DPTextfeld3.Size = New-Object System.Drawing.Size(275,40)
|
|
$DPTextfeld3.Text = "Folgende Eintraege konnten keinem Betriebsmittel zugewiesen werden:"
|
|
$TabSeiteDuplikate.Controls.Add($DPTextfeld3)
|
|
|
|
$DPListeFehler = New-Object System.Windows.Forms.DataGridView
|
|
$DPListeFehler.Location = New-Object System.Drawing.Size(580,60)
|
|
$DPListeFehler.Size = New-Object System.Drawing.Size(275,20)
|
|
$DPListeFehler.Height = 430
|
|
$DPListeFehler.ColumnCount = 2
|
|
$DPListeFehler.ColumnHeadersVisible = $true
|
|
$DPListeFehler.Columns[0].Name = "Zeile"
|
|
$DPListeFehler.Columns[1].Name = "Kennzeichnung"
|
|
$TabSeiteDuplikate.Controls.Add($DPListeFehler)
|
|
|
|
$DPBestaetigenButton = New-Object System.Windows.Forms.Button
|
|
$DPBestaetigenButton.Location = New-Object System.Drawing.Size(10,500)
|
|
$DPBestaetigenButton.Size = New-Object System.Drawing.Size(860,30)
|
|
$DPBestaetigenButton.Text = "Programm beenden"
|
|
$DPBestaetigenButton.Add_Click({
|
|
$Fenster.Dispose()
|
|
return
|
|
})
|
|
$TabSeiteDuplikate.Controls.Add($DPBestaetigenButton)
|
|
|
|
# Tab: Einstellungen
|
|
$TabSeiteEigenschaften = New-Object System.Windows.Forms.TabPage
|
|
$TabSeiteEigenschaften.TabIndex = 0
|
|
$TabSeiteEigenschaften.UseVisualStyleBackColor = $true
|
|
$TabSeiteEigenschaften.Text = "Einstellungen"
|
|
#Paddings
|
|
$TabSeiteEigenschaften.DataBindings.DefaultDataSourceUpdateMode = 0
|
|
$TabBasis.Controls.Add($TabSeiteEigenschaften)
|
|
|
|
$BasisHoehe1 = 80 #80
|
|
$BasisHoehe2 = $BasisHoehe1 + 20 #100
|
|
$BasisHoehe2x = $BasisHoehe2 + 30 #130
|
|
$BasisHoehe3 = $BasisHoehe2 + 65 #165
|
|
|
|
$BasisBreite1 = 10 #10
|
|
$BasisBreite2 = $BasisBreite1 + 70 #80
|
|
$BasisBreite3 = $BasisBreite2 + 60 #140
|
|
$BasisBreite4 = $BasisBreite3 + 210 #350
|
|
$BasisBreite5 = $BasisBreite4 + 55 #405
|
|
|
|
|
|
$ESTextfeld1 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld1.Location = New-Object System.Drawing.Size($BasisBreite1,10)
|
|
$ESTextfeld1.Size = New-Object System.Drawing.Size(710,20)
|
|
$ESTextfeld1.Text = "Startverzeichnis Navigation: $StartPfad"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld1)
|
|
|
|
$ESAendernButton = New-Object System.Windows.Forms.Button
|
|
$ESAendernButton.Location = New-Object System.Drawing.Size(730,10)
|
|
$ESAendernButton.Size = New-Object System.Drawing.Size(150,30)
|
|
$ESAendernButton.Text = "Aendern"
|
|
$ESAendernButton.Add_Click({
|
|
StartVerzeichnisAendern
|
|
})
|
|
$TabSeiteEigenschaften.Controls.Add($ESAendernButton)
|
|
|
|
#------------------- Tabelle mit ZielDateien
|
|
|
|
$ESTextfeld2 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld2.Location = New-Object System.Drawing.Size($BasisBreite1,50)
|
|
$ESTextfeld2.Size = New-Object System.Drawing.Size(200,20)
|
|
$ESTextfeld2.Text = "Zieldateien:"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld2)
|
|
|
|
$ESTextfeld3 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld3.Location = New-Object System.Drawing.Size(($BasisBreite1+30),$BasisHoehe1)
|
|
$ESTextfeld3.Size = New-Object System.Drawing.Size(80,20)
|
|
$ESTextfeld3.Text = "Prefix für"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld3)
|
|
|
|
$ESTextfeld4 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld4.Location = New-Object System.Drawing.Size($BasisBreite1,$BasisHoehe2)
|
|
$ESTextfeld4.Size = New-Object System.Drawing.Size(50,20)
|
|
$ESTextfeld4.Text = "Eingang"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld4)
|
|
|
|
$ESTextfeld5 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld5.Location = New-Object System.Drawing.Size(($BasisBreite2-5),$BasisHoehe2)
|
|
$ESTextfeld5.Size = New-Object System.Drawing.Size(55,20)
|
|
$ESTextfeld5.Text = "Ausgang"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld5)
|
|
|
|
$ESTextfeld6 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld6.Location = New-Object System.Drawing.Size($BasisBreite3,$BasisHoehe1)
|
|
$ESTextfeld6.Size = New-Object System.Drawing.Size(150,40)
|
|
$ESTextfeld6.Text = "Dateiname"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld6)
|
|
|
|
$ESTextfeld7 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld7.Location = New-Object System.Drawing.Size($BasisBreite4,$BasisHoehe1)
|
|
$ESTextfeld7.Size = New-Object System.Drawing.Size(100,20)
|
|
$ESTextfeld7.Text = "Wandlungsart"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld7)
|
|
|
|
$ESTextfeld8 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld8.Location = New-Object System.Drawing.Size($BasisBreite4,$BasisHoehe2)
|
|
$ESTextfeld8.Size = New-Object System.Drawing.Size(50,20)
|
|
$ESTextfeld8.Text = "Simpel"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld8)
|
|
|
|
$ESTextfeld9 = New-Object System.Windows.Forms.Label
|
|
$ESTextfeld9.Location = New-Object System.Drawing.Size($BasisBreite5,$BasisHoehe2)
|
|
$ESTextfeld9.Size = New-Object System.Drawing.Size(50,20)
|
|
$ESTextfeld9.Text = "TIA"
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeld9)
|
|
|
|
#--------------------------- Eintrag hinzufuegen Elemente
|
|
|
|
$ESTextfeldPrefixENew = New-Object System.Windows.Forms.TextBox
|
|
$ESTextfeldPrefixENew.Location = New-Object System.Drawing.Size($BasisBreite1,$Basishoehe2x)
|
|
$ESTextfeldPrefixENew.Size = New-Object System.Drawing.Size(40,20)
|
|
$ESTextfeldPrefixENew.Name = "ESTextfeldENew"
|
|
$ESTextfeldPrefixENew.Add_Click({
|
|
Write-Host "Ausgabe bei ESTextfeldENew"
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeldPrefixENew)
|
|
|
|
$ESTextfeldPrefixANew = New-Object System.Windows.Forms.TextBox
|
|
$ESTextfeldPrefixANew.Location = New-Object System.Drawing.Size($BasisBreite2,$Basishoehe2x)
|
|
$ESTextfeldPrefixANew.Size = New-Object System.Drawing.Size(40,20)
|
|
$ESTextfeldPrefixANew.Name = "ESTextfeldANew"
|
|
$ESTextfeldPrefixANew.Add_Click({
|
|
Write-Host "Ausgabe bei Button ESTextfeldANew"
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeldPrefixANew)
|
|
|
|
$ESTextfeldDateiNameNew = New-Object System.Windows.Forms.TextBox
|
|
$ESTextfeldDateiNameNew.Location = New-Object System.Drawing.Size($BasisBreite3,$Basishoehe2x)
|
|
$ESTextfeldDateiNameNew.Size = New-Object System.Drawing.Size(200,20)
|
|
$ESTextfeldDateiNameNew.Name = "ESTextfeldDateiNameNew"
|
|
$ESTextfeldDateiNameNew.Add_Click({
|
|
Write-Host "Ausgabe bei Button ESTextfeldDateiNameNew"
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeldDateiNameNew)
|
|
|
|
$ESRadioButtonSimpelNew = New-Object System.Windows.Forms.RadioButton
|
|
$ESRadioButtonSimpelNew.Location = New-Object System.Drawing.Size(15,10)
|
|
$ESRadioButtonSimpelNew.Size = New-Object System.Drawing.Size(17,17)
|
|
$ESRadioButtonSimpelNew.Name = "ESRadioButtonSimpelNew"
|
|
<#$ESRadioButtonSimpelNew.Add_Click({
|
|
Write-Host "Ausgabe bei Button $FaktorHoehe"
|
|
}.GetNewClosure())#>
|
|
#$TabSeiteEigenschaften.Controls.Add($ESRadioButtonSimpelNew)
|
|
|
|
$ESRadioButtonTIANew = New-Object System.Windows.Forms.RadioButton
|
|
$ESRadioButtonTIANew.Location = New-Object System.Drawing.Size(60,10)
|
|
$ESRadioButtonTIANew.Size = New-Object System.Drawing.Size(17,17)
|
|
$ESRadioButtonTIANew.Name = "ESRadioButtonTIANew"
|
|
<#$ESRadioButtonTIANew.Add_Click({
|
|
Write-Host "Ausgabe bei Button $FaktorHoehe"
|
|
}.GetNewClosure())#>
|
|
#$TabSeiteEigenschaften.Controls.Add($ESRadioButtonTIANew)
|
|
|
|
$ESGroupBoxRadioButtons = New-Object System.Windows.Forms.GroupBox
|
|
$ESGroupBoxRadioButtons.Location = New-Object System.Drawing.Size($BasisBreite4,($BasisHoehe2x-5))
|
|
$ESGroupBoxRadioButtons.Size = New-Object System.Drawing.Size(85,30)
|
|
$ESGroupBoxRadioButtons.Controls.Add($ESRadioButtonSimpelNew)
|
|
$ESGroupBoxRadioButtons.Controls.Add($ESRadioButtonTIANew)
|
|
$TabSeiteEigenschaften.Controls.Add($ESGroupBoxRadioButtons)
|
|
|
|
$ESHinzufuegenButton = New-Object System.Windows.Forms.Button
|
|
$ESHinzufuegenButton.Location = New-Object System.Drawing.Size(730,$BasisHoehe2x)
|
|
$ESHinzufuegenButton.Size = New-Object System.Drawing.Size(150,30)
|
|
$ESHinzufuegenButton.Text = "Eintrag hinzufuegen"
|
|
$ESHinzufuegenButton.Add_Click({
|
|
Write-Host "Eintrag hinzufuegen"
|
|
|
|
if ($ESRadioButtonTIANew.Checked) {
|
|
$WandlungsTyp = "TIA"
|
|
}
|
|
else {
|
|
$WandlungsTyp = "Simpel"
|
|
}
|
|
Write-Host "WandlungsTyp: " $WandlungsTyp
|
|
|
|
$NeueZielDatei = @([PSCustomObject]@{
|
|
PrefixEingang = $ESTextfeldPrefixENew.Text
|
|
PrefixAusgang = $ESTextfeldPrefixANew.Text
|
|
DateiName = $ESTextfeldDateiNameNew.Text
|
|
WandlungsTyp = $WandlungsTyp
|
|
})
|
|
EinstellungsDateiAendern "New" $FaktorHoehe $ZielDateien $NeueZielDatei
|
|
})
|
|
$TabSeiteEigenschaften.Controls.Add($ESHinzufuegenButton)
|
|
|
|
# Das hier später auslagern
|
|
Write-Host "Alle ZielDateien: " $ZielDateien
|
|
$FaktorHoehe = 0
|
|
foreach ($ZielDatei in $ZielDateien) {
|
|
# Eintrag hinzufügen mit #1 Textfeldern für a) Eingang b) Ausgang #2 Textfeld für Dateiname #3 Radio-Buttons für a) Simpel b) TIA
|
|
# Todo: Wie kann ich weitere Eigenschaften festlegen? Probieren: Set-Variable
|
|
#New-Variable -Name ("ESTextFeldPrefixE" + $i) -Value $(New-Object System.Windows.Forms.TextBox)
|
|
<#Set-Variable -Name ("ESTextFeldPrefixE" + $i + ".Location") -Value $(New-Object System.Drawing.Size(10,100))
|
|
Set-Variable -Name ("ESTextFeldPrefixE" + $i + ".Size") -Value $(New-Object System.Drawing.Size(400,20))
|
|
Set-Variable -Name ("ESTextFeldPrefixE" + $i + ".Text") -Value $("Test zur Laufzeitgenerierung")#>
|
|
<#$(New-Variable -Name ("ESTextFeldPrefixE" + $i + ".Location")) # = New-Object System.Drawing.Size(10,100)
|
|
$(Get-Variable -Name ("ESTextFeldPrefixE" + $i + ".Location")).Value = New-Object System.Drawing.Size(10,100)
|
|
|
|
$(New-Variable -Name ("ESTextFeldPrefixE" + $i + ".Size")) #= New-Object System.Drawing.Size(400,20)
|
|
$(New-Variable -Name ("ESTextFeldPrefixE" + $i + ".Text")) #= "Test zur Laufzeitgenerierung"
|
|
$TabSeiteEigenschaften.Controls.Add($(Get-Variable -Name $("ESTextFeldPrefixE" + $i)).Value)#>
|
|
|
|
$ESTextfeldPrefixE = New-Object System.Windows.Forms.TextBox
|
|
$ESTextfeldPrefixE.Location = New-Object System.Drawing.Size($BasisBreite1,($BasisHoehe3+35*$FaktorHoehe))
|
|
$ESTextfeldPrefixE.Size = New-Object System.Drawing.Size(40,20)
|
|
$ESTextfeldPrefixE.Text = $ZielDatei.PrefixEingang
|
|
$ESTextfeldPrefixE.Name = "ESTextfeldE$FaktorHoehe"
|
|
$ESTextfeldPrefixE.Add_Click({
|
|
Write-Host "Ausgabe bei Button $FaktorHoehe"
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeldPrefixE)
|
|
|
|
$ESTextfeldPrefixA = New-Object System.Windows.Forms.TextBox
|
|
$ESTextfeldPrefixA.Location = New-Object System.Drawing.Size($BasisBreite2,($BasisHoehe3+35*$FaktorHoehe))
|
|
$ESTextfeldPrefixA.Size = New-Object System.Drawing.Size(40,20)
|
|
$ESTextfeldPrefixA.Text = $ZielDatei.PrefixAusgang
|
|
$ESTextfeldPrefixA.Name = "ESTextfeldA$FaktorHoehe"
|
|
$ESTextfeldPrefixA.Add_Click({
|
|
Write-Host "Ausgabe bei Button $FaktorHoehe"
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeldPrefixA)
|
|
|
|
$ESTextfeldDateiName = New-Object System.Windows.Forms.TextBox
|
|
$ESTextfeldDateiName.Location = New-Object System.Drawing.Size($BasisBreite3,($BasisHoehe3+35*$FaktorHoehe))
|
|
$ESTextfeldDateiName.Size = New-Object System.Drawing.Size(200,20)
|
|
$ESTextfeldDateiName.Text = $ZielDatei.DateiName
|
|
$ESTextfeldDateiName.Name = "ESTextfeldDateiName$FaktorHoehe"
|
|
$ESTextfeldDateiName.Add_Click({
|
|
Write-Host "Ausgabe bei Button $FaktorHoehe"
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESTextfeldDateiName)
|
|
|
|
$ESRadioButtonSimpel = New-Object System.Windows.Forms.RadioButton
|
|
$ESRadioButtonSimpel.Location = New-Object System.Drawing.Size(15,10)
|
|
$ESRadioButtonSimpel.Size = New-Object System.Drawing.Size(17,17)
|
|
#$ESRadioButtonSimpel.Text = "Text Radio Button1" #$ZielDatei.DateiName
|
|
$ESRadioButtonSimpel.Name = "ESRadioButtonSimpel$FaktorHoehe"
|
|
<#$ESRadioButtonSimpel.Add_Click({
|
|
Write-Host "Ausgabe bei Button $FaktorHoehe"
|
|
}.GetNewClosure())#>
|
|
#$TabSeiteEigenschaften.Controls.Add($ESRadioButtonSimpel)
|
|
|
|
$ESRadioButtonTIA = New-Object System.Windows.Forms.RadioButton
|
|
$ESRadioButtonTIA.Location = New-Object System.Drawing.Size(60,10)
|
|
$ESRadioButtonTIA.Size = New-Object System.Drawing.Size(17,17)
|
|
#$ESRadioButtonTIA.Text = "Text Radio Button2" #$ZielDatei.DateiName
|
|
$ESRadioButtonTIA.Name = "ESRadioButtonTIA$FaktorHoehe"
|
|
<#$ESRadioButtonTIA.Add_Click({
|
|
Write-Host "Ausgabe bei Button $FaktorHoehe"
|
|
}.GetNewClosure())#>
|
|
#$TabSeiteEigenschaften.Controls.Add($ESRadioButtonTIA)
|
|
|
|
$ESGroupBoxRadioButtons = New-Object System.Windows.Forms.GroupBox
|
|
$ESGroupBoxRadioButtons.Location = New-Object System.Drawing.Size($BasisBreite4,($BasisHoehe3-5+35*$FaktorHoehe))
|
|
$ESGroupBoxRadioButtons.Size = New-Object System.Drawing.Size(85,30)
|
|
#$ESGroupBoxRadioButtons.Text = "Text ControlBox"
|
|
$ESGroupBoxRadioButtons.Controls.Add($ESRadioButtonSimpel)
|
|
$ESGroupBoxRadioButtons.Controls.Add($ESRadioButtonTIA)
|
|
$TabSeiteEigenschaften.Controls.Add($ESGroupBoxRadioButtons)
|
|
|
|
if ($ZielDatei.WandlungsTyp -eq "TIA") {
|
|
$ESRadioButtonTIA.Checked = $true
|
|
}
|
|
else {
|
|
$ESRadioButtonSimpel.Checked = $true
|
|
}
|
|
|
|
$ESLoeschenButton = New-Object System.Windows.Forms.Button
|
|
$ESLoeschenButton.Location = New-Object System.Drawing.Size(730,($BasisHoehe3+35*$FaktorHoehe))
|
|
$ESLoeschenButton.Size = New-Object System.Drawing.Size(150,30)
|
|
$ESLoeschenButton.Text = "Loeschen"
|
|
$ESLoeschenButton.Add_Click({
|
|
Write-Host "Loeschen von " $ZielDatei.DateiName " mit i-Wert " $FaktorHoehe
|
|
Write-Host "ZielDateien vor Übergabe: " $ZielDateien
|
|
EinstellungsDateiAendern "Del" $FaktorHoehe $ZielDateien ""
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESLoeschenButton)
|
|
|
|
$ESSpeichernButton = New-Object System.Windows.Forms.Button
|
|
$ESSpeichernButton.Location = New-Object System.Drawing.Size(570,($BasisHoehe3+35*$FaktorHoehe))
|
|
$ESSpeichernButton.Size = New-Object System.Drawing.Size(150,30)
|
|
$ESSpeichernButton.Text = "Aenderungen Speichern"
|
|
$ESSpeichernButton.Add_Click({
|
|
Write-Host "Speichern von " $ZielDatei.DateiName " mit i-Wert " $FaktorHoehe
|
|
|
|
if ($ESRadioButtonTIA.Checked) {
|
|
$WandlungsTyp = "TIA"
|
|
}
|
|
else {
|
|
$WandlungsTyp = "Simpel"
|
|
}
|
|
Write-Host "Wandlungstyp: " $WandlungsTyp
|
|
|
|
$ZielDateiNeu = @([PSCustomObject]@{
|
|
PrefixEingang = $ESTextfeldPrefixE.Text
|
|
PrefixAusgang = $ESTextfeldPrefixA.Text
|
|
DateiName = $ESTextfeldDateiName.Text
|
|
WandlungsTyp = $WandlungsTyp
|
|
})
|
|
Write-Host "Neue ZielDatei vor Übergabe: " $ZielDateiNeu
|
|
EinstellungsDateiAendern "Upd" $FaktorHoehe $ZielDateien $ZielDateiNeu
|
|
}.GetNewClosure())
|
|
$TabSeiteEigenschaften.Controls.Add($ESSpeichernButton)
|
|
|
|
Write-Host "Counter i: " $FaktorHoehe
|
|
Write-Host "Wert Zieldatei: " $ZielDatei
|
|
#Write-Host "Ausgabe: " $(Get-Variable -Name ("ESTextFeldPrefixE" + $i + ".Location")).Value
|
|
|
|
$FaktorHoehe++
|
|
}
|
|
|
|
|
|
$Fenster.Add_Shown({$Fenster.Activate()})
|
|
[void]$Fenster.ShowDialog()
|
|
|
|
return
|
|
}
|
|
|
|
#------------------- Funktion nur für das txt-GUI --------------------------
|
|
|
|
Function TXTReaktionReturn ($Pfad)
|
|
{
|
|
if (PfadExistiert $Pfad)
|
|
{
|
|
# Gültiger Pfad oder .txt-Datei
|
|
$PfadEnde = $(Split-Path $Pfad -Leaf)
|
|
if ($($PfadEnde -match ".txt"))
|
|
{
|
|
#$Fenster.Dispose()
|
|
ZuVERSpringen
|
|
# Ist zwar sachlich gesehen unsinn, aber sonst funktioniert Return in der GUI nicht richtig
|
|
$TXTPfadFeld.Text = $Pfad
|
|
return
|
|
}
|
|
else
|
|
{
|
|
AnzeigeAktualisieren "txt" $Pfad
|
|
}
|
|
}
|
|
else
|
|
{
|
|
# Laufwerke aktualisieren oder ungültiger Pfad
|
|
AnzeigeAktualisieren "txt" ""
|
|
}
|
|
return
|
|
}
|
|
|
|
#------------------- Funktion nur für das VerzeichnisWaehlen-GUI --------------------------
|
|
|
|
|
|
# Führt $Pfad und $Auswahl zusammen und überprüft ob der daraus resultierte neue Pfad vorhanden ist. Falls dies der Fall ist wird in den Bereich der Fortschrittsanzeige gewechselt
|
|
Function VERAuswahlBestaetigt($Pfad, $Auswahl)
|
|
{
|
|
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
|
|
|
|
if (PfadExistiert $Pfad)
|
|
{
|
|
ZuFASpringen
|
|
$VERPfadfeld.Text = $Pfad
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
#------------------- Funktionen zum wechseln der Tabs --------------------------
|
|
|
|
Function ZuVERSpringen
|
|
{
|
|
AnzeigeAktualisieren "ver" $TXTPfadFeld.Text
|
|
AufgabenAktualisieren "Zielverzeichnis auswaehlen"
|
|
Write-Host "Gewaehlte txt-Datei: " $TXTPfadFeld.Text
|
|
$TabBasis.SelectedIndex = 1
|
|
}
|
|
|
|
Function ZuFASpringen
|
|
{
|
|
# Falls Einstellungen eingefügt werden: in dieser Funktion viel Todo
|
|
|
|
AufgabenAktualisieren "Zieldateinamen erstellen"
|
|
Write-Host "Gewaehltes Verzeichnis: " $VERPfadFeld.Text
|
|
$TabBasis.SelectedIndex = 2
|
|
|
|
$PfadUrsprungsdatei = $TXTPfadFeld.Text
|
|
$PfadZielDateien = $VERPfadFeld.Text
|
|
$PfadDateiEA = ExcelDateiNameErstellen "EA" $PfadUrsprungsdatei $PfadZielDateien
|
|
$PfadDateiDIDQ = ExcelDateiNameErstellen "DIDQ" $PfadUrsprungsdatei $PfadZielDateien
|
|
|
|
AufgabenAktualisieren "Neue Excel-Dateien erstellen"
|
|
ExcelDateiErstellen $PfadDateiEA
|
|
ExcelDateiErstellen $PfadDateiDIDQ
|
|
|
|
AufgabenAktualisieren "Excel-Dateien mit Inhalten befuellen und Duplikate finden"
|
|
$AlleGleichenEA = ExcelDateiBeschreibenStandard $PfadUrsprungsdatei "E" "A" $PfadDateiEA
|
|
$AlleGleichenDIDQ = ExcelDateiBeschreibenSpezial $PfadUrsprungsdatei "%I" "%Q" $PfadDateiDIDQ
|
|
#Write-Host "Gleiche EA nach Rückgabe: " $AlleGleichenEA
|
|
$GleicheEingaenge = $AlleGleichenEA[0]
|
|
$GleicheAusgaenge = $AlleGleichenEA[1]
|
|
$Fehler = $AlleGleichenEA[2]
|
|
|
|
Write-Host "Gleiche Eingaenge: " $GleicheEingaenge
|
|
Write-Host "Gleiche Ausgaenge: " $GleicheAusgaenge
|
|
Write-Host "Fehler: " $Fehler
|
|
|
|
AufgabenAktualisieren "Ausgabe Duplikate"
|
|
ZuDPSpringen $GleicheEingaenge $GleicheAusgaenge $Fehler
|
|
}
|
|
|
|
Function ZuDPSpringen ($GleicheEingaenge, $GleicheAusgaenge, $Fehler)
|
|
{
|
|
foreach ($GleichenEingang in $GleicheEingaenge) {
|
|
$DPListeEingaenge.Rows.Add($($GleichenEingang.Zeile),($GleichenEingang.Name))
|
|
}
|
|
|
|
foreach ($GleichenAusgang in $GleicheAusgaenge) {
|
|
$DPListeAusgaenge.Rows.Add($($GleichenAusgang.Zeile),($GleichenAusgang.Name))
|
|
}
|
|
|
|
foreach ($Fehlen in $Fehler) {
|
|
$DPListeFehler.Rows.Add($($Fehlen.Zeile),($Fehlen.Name))
|
|
}
|
|
|
|
$TabBasis.SelectedIndex = 3
|
|
}
|
|
|
|
#------------------- Funktionen für alle GUIs --------------------------
|
|
|
|
|
|
# Bekommt Pfad, stellt fest ob Laufwerke oder Ordner angezeigt werden müssen und aktualisiert entsprechend alles
|
|
# Um die Laufwerke anzuzeigen, muss der $Pfad = "" sein
|
|
Function AnzeigeAktualisieren ($AuswahlTyp, $Pfad)
|
|
{
|
|
# Write-Host "Übergebener Pfad: " $Pfad
|
|
|
|
# Sicherstellen, dass es das Verzeichnis gibt
|
|
if (PfadExistiert $Pfad)
|
|
{
|
|
Write-Host "Ordner anzeigen"
|
|
$Optionen = Optionen $AuswahlTyp $Pfad
|
|
}
|
|
elseif ($Pfad.Length -eq 0) {
|
|
Write-Host "Laufwerke anzeigen"
|
|
$Optionen = LaufwerkeFinden
|
|
$Pfad = ""
|
|
}
|
|
else
|
|
{
|
|
AnzeigeAktualisieren ""
|
|
return
|
|
}
|
|
|
|
if ($($AuswahlTyp -eq "txt")) {
|
|
$TXTPfadFeld.Text = $Pfad
|
|
$TXTListeOrdnernamen.Items.Clear()
|
|
foreach ($Option in $Optionen)
|
|
{
|
|
if ($Option.Length -gt 0)
|
|
{
|
|
$TXTListeOrdnernamen.Items.Add($Option)
|
|
}
|
|
}
|
|
}
|
|
elseif ($($AuswahlTyp -eq "ver")) {
|
|
$VERPfadFeld.Text = $Pfad
|
|
$VERListeOrdnernamen.Items.Clear()
|
|
foreach ($Option in $Optionen)
|
|
{
|
|
if ($Option.Length -gt 0)
|
|
{
|
|
$VERListeOrdnernamen.Items.Add($Option)
|
|
}
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
Function VerzeichnisAuswaehlen ($AuswahlTyp, $Pfad, $Auswahl)
|
|
{
|
|
if (PfadExistiert $Pfad)
|
|
{
|
|
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
|
|
}
|
|
elseif ($Pfad.Length -eq 0) {
|
|
#Wenn der Pfad die Länge 0 hat, wurde ein Laufwerk gewählt
|
|
$Pfad = $Auswahl
|
|
}
|
|
else {
|
|
#Fehlerfall/ ungültiger Pfad: zurück zu Laufwerken navigieren
|
|
$Pfad = ""
|
|
}
|
|
|
|
# Erkennen, ob *.txt-Datei gewählt wurde -> ggf. Auswahl abgeschlossen
|
|
if ($($($Auswahl -match ".txt") -and $($AuswahlTyp -eq "txt")))
|
|
{
|
|
# Für den Gesamtfortschritt Anzahl Dateien auslesen
|
|
$Datei = Get-Content $Pfad
|
|
$FATextfeldGesamtEintraege.Text = 2 * $($Datei.Length)
|
|
|
|
# Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
|
|
# Write-Host "Dateityp: " $Pfad.GetType()
|
|
ZuVERSpringen
|
|
# Ist zwar sachlich gesehen unsinn, aber sonst funktioniert Return in der GUI nicht
|
|
$TXTPfadFeld.Text = $Pfad
|
|
return
|
|
}
|
|
|
|
AnzeigeAktualisieren $AuswahlTyp $Pfad
|
|
|
|
return
|
|
}
|
|
|
|
Function VerzeichnisZurueck ($AuswahlTyp, $Pfad)
|
|
{
|
|
if ($Pfad.Length -gt 3)
|
|
{
|
|
# Weiter mit Ordnern
|
|
# Write-Host "Ordner anzeigen"
|
|
$Pfad = Split-Path $Pfad
|
|
}
|
|
elseif ($Pfad.Length -le 3)
|
|
{
|
|
# Weiter mit Laufwerken
|
|
# Write-Host "Laufwerke anzeigen"
|
|
$Pfad = ""
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Fehler bei Verzeichnis zurueck"
|
|
# Fehler/ Nichts tun?
|
|
# Ermitteln: wann tritt dieser Fall ein?
|
|
$Pfad = ""
|
|
}
|
|
AnzeigeAktualisieren $AuswahlTyp $Pfad
|
|
return
|
|
}
|
|
|
|
Function TastenReaktionPfadFeld($AuswahlTyp, $Taste)
|
|
{
|
|
# Write-Host "Übergebene Taste: " $Taste
|
|
if ($AuswahlTyp -eq "txt") {
|
|
switch ($Taste){
|
|
"Return" {
|
|
# Write-Host "Enter gedrückt"
|
|
$Pfad = $TXTPfadFeld.Text
|
|
# Write-Host "Pfad: " $Pfad
|
|
|
|
TXTReaktionReturn $Pfad
|
|
}
|
|
Default {
|
|
# Write-Host "Gedrückte Taste: " $Taste
|
|
}
|
|
}
|
|
}
|
|
elseif ($AuswahlTyp -eq "ver") {
|
|
switch ($Taste) {
|
|
"Return" {
|
|
$Pfad = $VERPfadFeld.Text
|
|
|
|
AnzeigeAktualisieren "ver" $Pfad
|
|
}
|
|
# Entfernt, da man sonst im PfadFeld nicht groß schreiben kann!
|
|
<#"ShiftKey" {
|
|
$Pfad = $VERPfadFeld.Text
|
|
$Auswahl = $VERListeOrdnernamen.SelectedItem
|
|
|
|
ReaktionShiftKey $Pfad $Auswahl
|
|
}#>
|
|
Default {
|
|
# Write-Host "Gedrückte Taste: " $Taste
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
Function TastenReaktionListeOrdnernamen($AuswahlTyp, $Taste)
|
|
{
|
|
# Write-Host "Übergebene Taste: " $Taste
|
|
if ($AuswahlTyp -eq "txt"){
|
|
switch ($Taste){
|
|
"Return" {
|
|
# Write-Host "Enter gedrückt"
|
|
$Auswahl = $TXTListeOrdnernamen.SelectedItem
|
|
$Pfad = $TXTPfadFeld.Text
|
|
# Write-Host "Auswahl: " $Auswahl
|
|
# Write-Host "Pfad: " $Pfad
|
|
|
|
VerzeichnisAuswaehlen $AuswahlTyp $Pfad $Auswahl
|
|
}
|
|
"Back" {
|
|
# Write-Host "Back gedrückt"
|
|
$Pfad = $TXTPfadFeld.Text
|
|
# Write-Host "Pfad: " $Pfad
|
|
|
|
# Pfad aktualisieren
|
|
VerzeichnisZurueck $AuswahlTyp $Pfad
|
|
}
|
|
Default {
|
|
# Write-Host "Gedrückte Taste: " $Taste
|
|
}
|
|
}
|
|
}
|
|
elseif ($AuswahlTyp -eq "ver") {
|
|
switch ($Taste) {
|
|
"Return" {
|
|
$Auswahl = $VERListeOrdnernamen.SelectedItem
|
|
$Pfad = $VERPfadFeld.Text
|
|
VerzeichnisAuswaehlen $AuswahlTyp $Pfad $Auswahl
|
|
}
|
|
"Back" {
|
|
$Pfad = $VERPfadFeld.Text
|
|
VerzeichnisZurueck $AuswahlTyp $Pfad
|
|
}
|
|
"ShiftKey" {
|
|
$Pfad = $VERPfadFeld.Text
|
|
$Auswahl = $VERListeOrdnernamen.SelectedItem
|
|
ReaktionShiftKey $Pfad $Auswahl
|
|
}
|
|
Default {
|
|
# Write-Hoste "Gedrückte Taste: " $Taste
|
|
}
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
Function TastenReaktionButtons($AuswahlTyp, $Taste)
|
|
{
|
|
# Write-Host "Übergebene Taste: " $Taste
|
|
if ($AuswahlTyp -eq "txt") {
|
|
switch ($Taste){
|
|
"Back" {
|
|
# Write-Host "Back gedrückt"
|
|
$Pfad = $TXTPfadFeld.Text
|
|
# Write-Host "Pfad: " $Pfad
|
|
|
|
# Pfad aktualisieren
|
|
VerzeichnisZurueck $AuswahlTyp $Pfad
|
|
}
|
|
Default {
|
|
# Write-Host "Gedrückte Taste: " $Taste
|
|
}
|
|
}
|
|
}
|
|
elseif ($AuswahlTyp -eq "ver") {
|
|
switch ($Taste) {
|
|
"Back" {
|
|
$Pfad = $VERPfadFeld.Text
|
|
VerzeichnisZurueck $AuswahlTyp $Pfad
|
|
}
|
|
"ShiftKey" {
|
|
$Pfad = $VERPfadFeld.Text
|
|
$Auswahl = $VERListeOrdnernamen.SelectedItem
|
|
ReaktionShiftKey $Pfad $Auswahl
|
|
}
|
|
Default {
|
|
# Write-Host "Gedrückte Taste: " $Taste
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
Function Optionen($AuswahlTyp, $Pfad)
|
|
{
|
|
# Unterordner und .txt-Dateien finden
|
|
# Typzuweisung nötig, da aus unbekanntem Grund sonst Unterordner, die mit "_" beginnen, nicht gefunden werden können
|
|
[System.Object[]]$UnterOrdner = UnterOrdnerFinden $Pfad
|
|
|
|
if ($AuswahlTyp -eq "txt") {
|
|
$TxtDateien = TxtDateienFinden $Pfad
|
|
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
|
|
$Optionen = $UnterOrdner + $TxtDateien
|
|
}
|
|
elseif ($AuswahlTyp -eq "ver") {
|
|
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
|
|
$Optionen = $UnterOrdner
|
|
}
|
|
return $Optionen
|
|
}
|
|
|
|
Function PfadExistiert ($Pfad)
|
|
{
|
|
# Um Abzufangen, dass Test-Path mit leerem Wert durchlaufen wird. Leere Verzeichnisse gelten als ungültig.
|
|
if ($Pfad.Length -eq 0) {
|
|
return $false
|
|
}
|
|
if ($(Test-Path $Pfad -PathType Container) -or $(Test-Path $Pfad -Include "*.txt"))
|
|
{
|
|
# Write-Host "Bei dem Verzeichnis handelt es sich um eine *.txt-Datei oder ein gültiges Verzeichnis"
|
|
return $true
|
|
}
|
|
else
|
|
{
|
|
# Write-Host "Das Verzeichnis existiert nicht oder es wurde keine *.txt-Datei gewählt"
|
|
return $false
|
|
}
|
|
}
|
|
|
|
Function LaufwerkeFinden()
|
|
{
|
|
$Laufwerke = $(Get-PSDrive | Where-Object {$_.Free}).Name
|
|
$i = 0
|
|
|
|
foreach($Laufwerk in $Laufwerke)
|
|
{
|
|
$Laufwerke[$i] = $Laufwerk + ":\"
|
|
$i++
|
|
}
|
|
return $Laufwerke
|
|
}
|
|
|
|
Function UnterOrdnerFinden($Pfad)
|
|
{
|
|
$UnterOrdner = $(Get-ChildItem $Pfad -Directory)
|
|
|
|
if ($($UnterOrdner.Length -gt 0))
|
|
{
|
|
$Ordner = $(Split-Path $UnterOrdner -Leaf)
|
|
}
|
|
else {
|
|
$Ordner = ""
|
|
}
|
|
|
|
return $Ordner
|
|
}
|
|
|
|
Function TxtDateienFinden($Pfad)
|
|
{
|
|
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
|
|
|
|
if ($TxtDateien.Length -gt 0)
|
|
{
|
|
return $(Split-Path $TxtDateien -Leaf)
|
|
}
|
|
else
|
|
{
|
|
return
|
|
}
|
|
}
|
|
|
|
Function ReaktionShiftKey ($Pfad, $Auswahl)
|
|
{
|
|
if (PfadExistiert $Pfad)
|
|
{
|
|
VERAuswahlBestaetigt $Pfad $Auswahl
|
|
}
|
|
else
|
|
{
|
|
AnzeigeAktualisieren "ver" ""
|
|
}
|
|
return
|
|
}
|
|
|
|
|
|
Function AufgabenAktualisieren ($Aufgabe)
|
|
{
|
|
$FAListeErledigteAufgaben.Items.Add($FATextfeldAktuelleAufgabe.Text)
|
|
$FATextfeldAktuelleAufgabe.Text = $Aufgabe
|
|
}
|
|
|
|
Function DateiBeschreibenAktualisieren
|
|
{
|
|
$AnteilJeBeschriftung = 100 / $($FATextfeldGesamtEintraege.Text)
|
|
[System.double] $FATextfeldRealwertFortschrittsbar.Text += $AnteilJeBeschriftung
|
|
|
|
#Da $FAFortschrittsbar.Value anscheinend ein int ist, ist der letzte Wert i. d. R. höher als 100 -> Fehler, der hiermit abgefangen wird
|
|
if ($([System.Double]$FATextfeldRealwertFortschrittsbar.Text) -ge 100)
|
|
{
|
|
$FAFortschrittsbar.Value = 100
|
|
}
|
|
else
|
|
{
|
|
$FAFortschrittsbar.Value = $FATextfeldRealwertFortschrittsbar.Text
|
|
}
|
|
|
|
|
|
[System.Int64] $BearbeiteteEintraege = $FATextfeldBearbeiteteEintraege.Text
|
|
$BearbeiteteEintraege++
|
|
$FATextfeldBearbeiteteEintraege.Text = $BearbeiteteEintraege
|
|
}
|
|
|
|
#--------------------------------------- Start Funktionen für Einstellungen -------------------------------
|
|
|
|
Function AnzeigeEinstellungenAktualisieren ()
|
|
{
|
|
|
|
}
|
|
|
|
Function StartVerzeichnisAendern ()
|
|
{
|
|
$Explorer = New-Object System.Windows.Forms.FolderBrowserDialog
|
|
$Explorer.ShowDialog()
|
|
$Pfad = $Explorer.SelectedPath
|
|
Write-Host "Einstellungsdatei: " $PfadEinstellungsDatei
|
|
Write-Host "Pfad: " $Pfad
|
|
#$PfadEinstellungsDatei | Out-File -FilePath $PfadEinstellungsDatei
|
|
$DateiInhalt = Get-Content $PfadEinstellungsDatei
|
|
$DateiInhalt[0] = $Pfad
|
|
Clear-Content $PfadEinstellungsDatei
|
|
Add-Content $PfadEinstellungsDatei $DateiInhalt
|
|
|
|
AnzeigeAktualisieren "txt" $Pfad
|
|
AnzeigeAktualisieren "ver" $Pfad
|
|
#AnzeigenEinstellungenAktualisieren
|
|
}
|
|
|
|
Function EinstellungsDateiAendern($Art, $Eintrag, $ZielDateien, $ZielDatei)
|
|
{
|
|
# Anpassen von $ZielDateien
|
|
switch ($Art) {
|
|
New {
|
|
Write-Host "[New] Alte ZielDateien: " $ZielDateien
|
|
$ZielDateien += $ZielDatei
|
|
|
|
Write-Host "[New] Neue ZielDateien: " $ZielDateien
|
|
|
|
# Felder leeren
|
|
# Todo: auslagern in AnzeigenEinstellungenAktualisieren. Soll auch gemacht werden, nachdem Einträge geloescht oder veraendert wurden!
|
|
$ESTextfeldPrefixENew.Text = ""
|
|
$ESTextfeldPrefixANew.Text = ""
|
|
$ESTextfeldDateiNameNew.Text = ""
|
|
$ESRadioButtonSimpelNew.Checked = $false
|
|
$ESRadioButtonTIANew.Checked = $false
|
|
}
|
|
Upd {
|
|
Write-Host "[Upd] Alte ZielDateien: " $ZielDateien
|
|
Write-Host "Einzufuegende Zieldatei: " $ZielDatei
|
|
|
|
$ZielDateien[$Eintrag] = $ZielDatei
|
|
|
|
Write-Host "[Upd] Neue ZielDateien: " $ZielDateien
|
|
}
|
|
Del {
|
|
Write-Host "[Del] Alte ZielDateien: " $ZielDateien ", Eintrag: " $Eintrag
|
|
|
|
$i = 0
|
|
foreach ($ZielDatei in $ZielDateien) {
|
|
if ($Eintrag -ne $i) {
|
|
$NeueZielDateien += $ZielDatei
|
|
}
|
|
$i++
|
|
}
|
|
|
|
Clear-Variable ZielDateien
|
|
$ZielDateien = $NeueZielDateien
|
|
Write-Host "[Del] Neue ZielDateien: " $ZielDateien
|
|
}
|
|
Default {}
|
|
}
|
|
|
|
# Schreiben in Einstellungsdatei
|
|
$StartPfad = $(Get-Content $PfadEinstellungsDatei)[0]
|
|
Clear-Content $PfadEinstellungsDatei
|
|
Write-Host "StartPfad: " $StartPfad " Pfad Einstellungsdatei: " $PfadEinstellungsDatei
|
|
Add-Content $PfadEinstellungsDatei $StartPfad
|
|
foreach ($ZielDatei in $ZielDateien) {
|
|
Add-Content $PfadEinstellungsDatei $("Datei|" + $ZielDatei.PrefixEingang + "|" + $ZielDatei.PrefixAusgang + "|" + $ZielDatei.DateiName + "|" + $ZielDatei.WandlungsTyp)
|
|
}
|
|
|
|
|
|
# Anzeige in Einstellungen aktualisieren
|
|
}
|
|
#--------------------------------------- Ende Funktionen für GUI -------------------------------
|
|
|
|
Function ExcelDateiNameErstellen ($Prefix, $PfadUrsprungsdatei, $PfadZielDatei)
|
|
{
|
|
$BasisNameZielDatei = Split-Path $PfadUrsprungsdatei -Leaf
|
|
$BasisNameZielDateiLaenge = $BasisNameZielDatei.Length
|
|
$BasisNameZielDateiKurz = $BasisNameZielDatei.Substring(0, $($BasisNameZielDateiLaenge - 4))
|
|
$GesamtPfadZielDatei = $PfadZielDatei + "\" + $Prefix + "_" + $BasisNameZielDateiKurz + ".xlsx"
|
|
|
|
return $GesamtPfadZielDatei
|
|
}
|
|
|
|
Function ExcelDateiErstellen ($DateiPfad)
|
|
{
|
|
$Datei = New-Object -ComObject Excel.Application
|
|
$Mappe = $Datei.Workbooks.Add()
|
|
$Mappe.SaveAs($DateiPfad)
|
|
$Datei.Quit()
|
|
|
|
return
|
|
}
|
|
|
|
Function ExcelDateiBeschreibenStandard ($PfadUrsprungsdatei, $PrefixEingang, $PrefixAusgang, $ZielDatei)
|
|
{
|
|
$Datei = New-Object -ComObject Excel.Application
|
|
$Mappe = $Datei.Workbooks.Open($ZielDatei)
|
|
$Blatt = $Mappe.WorkSheets.item(1)
|
|
$Datei.Visible = $false
|
|
|
|
$i = 1
|
|
$Eingaenge = @()
|
|
$ZuEingang = @("DI", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BJ", "BK", "BL", "BM", "BN", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FJ", "FK", "FL", "FM", "FN", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SJ", "SK", "SL", "SM", "SN", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ")
|
|
$Ausgaenge = @()
|
|
$ZuAusgang = @("DQ", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CJ", "CK", "CL", "CM", "CN", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EJ", "EK", "EL", "EM", "EN", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GJ", "GK", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HJ", "HK", "HL", "HM", "HN", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KJ", "KK", "KL", "KM", "KN", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MJ", "MK", "ML", "MM", "MN", "MP", "MQ", "MR", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PJ", "PK", "PL", "PM", "PN", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QJ", "QK", "QL", "QM", "QN", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RJ", "RK", "RL", "RM", "RN", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ")
|
|
$Fehler = @()
|
|
|
|
$Ursprungdatei = Get-Content $PfadUrsprungsdatei
|
|
|
|
foreach ($Eintrag in $Ursprungdatei)
|
|
{
|
|
$Eintragszeile = $Eintrag.Split("'")
|
|
$BMKZahl = $Eintragszeile[1]
|
|
$BMKZahl = $BMKZahl.TrimStart("'")
|
|
$Kommentar = $Eintragszeile[3]
|
|
$Kommentar = $Kommentar.TrimEnd("'")
|
|
|
|
if ($($($BMKZahl.Substring(0,2)) -in $ZuEingang))
|
|
{
|
|
$BMKZahl = $BMKZahl -replace("[a-zA-Z]","")
|
|
$BMKZahlLaenge = $($BMKZahl.Length - 1)
|
|
$BMKZahl = $BMKZahl.Substring(0,$BMKZahlLaenge) + "." + $BMKZahl.Substring($BMKZahlLaenge)
|
|
$BMKZahl = $PrefixEingang + $BMKZahl
|
|
$Eingaenge += @([PSCustomObject]@{
|
|
Name = $BMKZahl
|
|
Zeile = $i
|
|
})
|
|
}
|
|
elseif ($($($BMKZahl.Substring(0,2)) -in $ZuAusgang))
|
|
{
|
|
$BMKZahl = $BMKZahl -replace("[a-zA-Z]","")
|
|
$BMKZahlLaenge = $($BMKZahl.Length - 1)
|
|
$BMKZahl = $BMKZahl.Substring(0,$BMKZahlLaenge) + "." + $BMKZahl.Substring($BMKZahlLaenge)
|
|
$BMKZahl = $PrefixAusgang + $BMKZahl
|
|
$Ausgaenge += @([PSCustomObject]@{
|
|
Name = $BMKZahl
|
|
Zeile = $i
|
|
})
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Achtung, Fehler bei " $BMKZahl $Kommentar
|
|
$Fehler += @([PSCustomObject]@{
|
|
Name = $BMKZahl
|
|
Zeile = $i
|
|
})
|
|
}
|
|
|
|
# Write-Host "In Excel schreiben: BMKZahl: " $BMKZahl " Kommentar: " $Kommentar
|
|
$Blatt.Cells.Item($i,1) = $BMKZahl
|
|
$Blatt.Cells.Item($i,2) = $Kommentar
|
|
|
|
$i++
|
|
|
|
DateiBeschreibenAktualisieren
|
|
}
|
|
|
|
$Mappe.Save()
|
|
$Datei.Quit()
|
|
|
|
$GleicheEingaenge = GleicheFinden $Eingaenge
|
|
$GleicheAusgaenge = GleicheFinden $Ausgaenge
|
|
Write-Host "Gleiche fuer " $PrefixEingang ": " $GleicheEingaenge
|
|
Write-Host "Gleiche fuer " $PrefixAusgang ": " $GleicheAusgaenge
|
|
Write-Host "Fehler bei: " $Fehler
|
|
|
|
if ( $($Fehler.Length -eq 0))
|
|
{
|
|
$Fehler += @([PSCustomObject]@{
|
|
Name = "Keine"
|
|
Zeile = "Alle"
|
|
})
|
|
}
|
|
|
|
return $GleicheEingaenge, $GleicheAusgaenge, $Fehler
|
|
}
|
|
|
|
Function ExcelDateiBeschreibenSpezial ($PfadUrsprungsdatei, $PrefixEingang, $PrefixAusgang, $ZielDatei)
|
|
{
|
|
$Datei = New-Object -ComObject Excel.Application
|
|
$Mappe = $Datei.Workbooks.Open($ZielDatei)
|
|
$Blatt = $Mappe.WorkSheets.item(1)
|
|
$Datei.Visible = $false
|
|
|
|
$i = 2
|
|
$Eingaenge = @()
|
|
$ZuEingang = @("DI", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BJ", "BK", "BL", "BM", "BN", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FJ", "FK", "FL", "FM", "FN", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SJ", "SK", "SL", "SM", "SN", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ")
|
|
$Ausgaenge = @()
|
|
$ZuAusgang = @("DQ", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CJ", "CK", "CL", "CM", "CN", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EJ", "EK", "EL", "EM", "EN", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GJ", "GK", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HJ", "HK", "HL", "HM", "HN", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KJ", "KK", "KL", "KM", "KN", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MJ", "MK", "ML", "MM", "MN", "MP", "MQ", "MR", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PJ", "PK", "PL", "PM", "PN", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QJ", "QK", "QL", "QM", "QN", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RJ", "RK", "RL", "RM", "RN", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ")
|
|
$Fehler = @()
|
|
|
|
$Blatt.Cells.Item(1,1) = "Name"
|
|
$Blatt.Cells.Item(1,2) = "Path"
|
|
$Blatt.Cells.Item(1,3) = "Data Type"
|
|
$Blatt.Cells.Item(1,4) = "Logical Address"
|
|
$Blatt.Cells.Item(1,5) = "Comment"
|
|
$Blatt.Cells.Item(1,6) = "Hmi Visible"
|
|
$Blatt.Cells.Item(1,7) = "Hmi Accessible"
|
|
$Blatt.Cells.Item(1,8) = "Hmi Writeable"
|
|
$Blatt.Cells.Item(1,9) = "Typeobject ID"
|
|
$Blatt.Cells.Item(1,10) = "Version ID"
|
|
|
|
$Ursprungdatei = Get-Content $PfadUrsprungsdatei
|
|
|
|
foreach ($Eintrag in $Ursprungdatei)
|
|
{
|
|
$Eintragszeile = $Eintrag.Split("'")
|
|
$BMKZahl = $Eintragszeile[1]
|
|
$BMKZahl = $BMKZahl.TrimStart("'")
|
|
$Kommentar = $Eintragszeile[3]
|
|
$Kommentar = $Kommentar.TrimEnd("'")
|
|
|
|
if ($($($BMKZahl.Substring(0,2)) -in $ZuEingang))
|
|
{
|
|
$BMKZahl = $BMKZahl -replace("[a-zA-Z]","")
|
|
$BMKZahlLaenge = $($BMKZahl.Length - 1)
|
|
$BMKZahl = $BMKZahl.Substring(0,$BMKZahlLaenge) + "." + $BMKZahl.Substring($BMKZahlLaenge)
|
|
$BMKZahl = $PrefixEingang + $BMKZahl
|
|
$Eingaenge += @([PSCustomObject]@{
|
|
Name = $BMKZahl
|
|
Zeile = $i
|
|
})
|
|
}
|
|
elseif ($($($BMKZahl.Substring(0,2)) -in $ZuAusgang))
|
|
{
|
|
$BMKZahl = $BMKZahl -replace("[a-zA-Z]","")
|
|
$BMKZahlLaenge = $($BMKZahl.Length - 1)
|
|
$BMKZahl = $BMKZahl.Substring(0,$BMKZahlLaenge) + "." + $BMKZahl.Substring($BMKZahlLaenge)
|
|
$BMKZahl = $PrefixAusgang + $BMKZahl
|
|
$Ausgaenge += @([PSCustomObject]@{
|
|
Name = $BMKZahl
|
|
Zeile = $i
|
|
})
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Achtung, Fehler bei " $BMKZahl $Kommentar
|
|
$BMKZahlLaenge = $($BMKZahl.Length - 1)
|
|
$BMKZahl = $BMKZahl.Substring(0,$BMKZahlLaenge) + "." + $BMKZahl.Substring($BMKZahlLaenge)
|
|
$Fehler += @([PSCustomObject]@{
|
|
Name = $BMKZahl
|
|
Zeile = $i
|
|
})
|
|
}
|
|
|
|
#Write-Host "In Excel schreiben: BMKZahl: " $BMKZahl " Kommentar: " $Kommentar
|
|
$Blatt.Cells.Item($i,1) = $Kommentar #Name
|
|
$Blatt.Cells.Item($i,2) = "Standard-Variablentabelle" #Path
|
|
$Blatt.Cells.Item($i,3) = "Bool" #Data Type
|
|
$Blatt.Cells.Item($i,4) = $BMKZahl #Logical Address
|
|
#$Blatt.Cells.Item($i,5) = "" #Comment
|
|
$Blatt.Cells.Item($i,6) = "'True" #Hmi Visible
|
|
$Blatt.Cells.Item($i,7) = "'True" #Hmi Accessible
|
|
$Blatt.Cells.Item($i,8) = "'True" #Hmi Writeable
|
|
#$Blatt.Cells.Item($i,9) = "" #Typeobject ID
|
|
#$Blatt.Cells.Item($i,10) = "" #Version ID
|
|
|
|
|
|
$i++
|
|
|
|
DateiBeschreibenAktualisieren
|
|
}
|
|
|
|
$Mappe.Save()
|
|
$Datei.Quit()
|
|
|
|
$GleicheEingaenge = GleicheFinden $Eingaenge
|
|
$GleicheAusgaenge = GleicheFinden $Ausgaenge
|
|
Write-Host "Gleiche fuer " $PrefixEingang ": " $GleicheEingaenge
|
|
Write-Host "Gleiche fuer " $PrefixAusgang ": " $GleicheAusgaenge
|
|
Write-Host "Fehler bei: " $Fehler
|
|
|
|
if ( $($Fehler.Length -eq 0))
|
|
{
|
|
$Fehler += @([PSCustomObject]@{
|
|
Name = "Keine"
|
|
Zeile = "Alle"
|
|
})
|
|
}
|
|
|
|
return $GleicheEingaenge, $GleicheAusgaenge, $Fehler
|
|
}
|
|
|
|
Function GleicheFinden ($ZuUeberpruefen)
|
|
{
|
|
$ZuUeberpruefen = $ZuUeberpruefen | Sort-Object "Name"
|
|
$Gleiche = @()
|
|
for ($i = 0; $i -lt $($ZuUeberpruefen.Count - 1); $i++)
|
|
{
|
|
$IstGleich = $($ZuUeberpruefen[$i].Name -eq $ZuUeberpruefen[$($i+1)].Name)
|
|
if ($IstGleich)
|
|
{
|
|
# Eintrag hinzufügen
|
|
if (-not $($Gleiche[-1].Zeile -eq $ZuUeberpruefen[$i].Zeile))
|
|
{
|
|
$Gleiche += $ZuUeberpruefen[$i]
|
|
}
|
|
$Gleiche += $ZuUeberpruefen[$($i+1)]
|
|
#Write-Host "Gleiche: " $Gleiche
|
|
}
|
|
}
|
|
|
|
if ( $($Gleiche.Length -eq 0))
|
|
{
|
|
$Gleiche += @([PSCustomObject]@{
|
|
Name = "Keine"
|
|
Zeile = "Alle"
|
|
})
|
|
}
|
|
|
|
return $Gleiche
|
|
}
|
|
|
|
|
|
Main |