Unterordner dazu

This commit is contained in:
2023-06-13 15:37:11 +02:00
parent d15fadc335
commit d091fe336e
59 changed files with 17458 additions and 0 deletions
@@ -0,0 +1,15 @@
Hinweise zur Einstellungsdatei:
1) Jeder Eintrag wird durch senkrechte Striche (|) geteilt. Der erste Bereich gibt die Art des Eintrags an.
Moegliche Werte sind 'StartPfad' und 'Datei'. Es sollte nur ein StartPfad angegeben sein. Sind mehrere Angegeben,
wird der erste verwendet. Es koennen beliebig viele Dateien angegeben werden.
2) Die rechte Spalte bei Dateien gibt das Konvertierungsformat fuer diese Datei an. Moeglich sind 'TIA', 'WSCAD'
und 'Simpel'. Ist ein falscher oder kein Wert angegeben, wird automatisch in 'Simpel' konvertiert.
3) Die zweite Spalte von rechts bei Dateien gibt den Zieldateinamen an. Ist darin [Ursprungsdatei] enthalten,
wird dieser Teil durch den Namen der txt-Datei ersetzt, von der die Daten konvertiert werden.
Nutzung des Konvertierers auf eigene Gefahr und ohne Haftungsuebernahme bei Schaeden!
StartPfad|R:\m.kraft\Excel Werte ändern\Realtest\Neuer Ordner
VerzeichnisWahl|EigenerPfad
ZielPfad|R:\m.kraft\Excel Werte ndern\Realtest\Neuer Ordner
Datei|E|A|WSCAD_[Ursprungsdatei]|WSCAD
Datei|%E|%A|TIA_[Ursprungsdatei]|TIA
Datei|E|A|EA_[Ursprungsdatei]|Simpel
@@ -0,0 +1,2 @@
R:\m.kraft\Excel Werte ändern
x
@@ -0,0 +1,13 @@
Hinweise zur Einstellungsdatei:
1) Jeder Eintrag wird durch senkrechte Striche (|) geteilt. Der erste Bereich gibt die Art des Eintrags an.
Moegliche Werte sind 'StartPfad' und 'Datei'. Es sollte nur ein StartPfad angegeben sein. Sind mehrere Angegeben,
wird der erste verwendet. Es koennen beliebig viele Dateien angegeben werden.
2) Die rechte Spalte bei Dateien gibt das Konvertierungsformat fuer diese Datei an. Moeglich sind 'TIA', 'WSCAD'
und 'Simpel'. Ist ein falscher oder kein Wert angegeben, wird automatisch in 'Simpel' konvertiert.
3) Die zweite Spalte von rechts bei Dateien gibt den Zieldateinamen an. Ist darin [Ursprungsdatei] enthalten,
wird dieser Teil durch den Namen der txt-Datei ersetzt, von der die Daten konvertiert werden.
Nutzung des Konvertierers auf eigene Gefahr und ohne Haftungsuebernahme bei Schaeden!
StartPfad|R:\m.kraft\Excel Werte ändern\Realtest
VerzeichnisWahl|WieTXT
ZielPfad|R:\m.kraft\Excel Werte ändern\Test-Skripte
Datei|E|A|[Ursprungsdatei]|BMK
+14
View File
@@ -0,0 +1,14 @@
$Datei = New-Object -ComObject Excel.Application
Pause
#$Mappe = $Datei.Workbooks.Add()
#$Mappe.SaveAs("Z:\Automatisierung\WSCAD\IMPORT-EXPORT_WSCAD\SKRIPT-KONVERTIERUNG\Test-Excel.docx")
#$Blatt = $Mappe.WorkSheets.item(1)
$Datei.Visible = $false
#$Blatt.Cells.Item(1,1) = "Testtext"
$Mappe.Save()
$Datei.Quit()
Pause
+268
View File
@@ -0,0 +1,268 @@
Function Main
{
$Laufwerke = LaufwerkeFinden
Gui $Laufwerke
#Write-Host "Dateityp nach Übergabe: " $Pfad.GetType()
#Write-Host "Datei ausgewählt mit dem Verzeichnis " $Pfad
}
Function Gui ($Laufwerke)
{
[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.Text = "Laufwerke"
$Fenster.Size = New-Object System.Drawing.Size(900,600) #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
# PfadFeld
$PfadFeld = New-Object System.Windows.Forms.TextBox
$PfadFeld.Location = New-Object System.Drawing.Size(10,10)
$PfadFeld.Size = New-Object System.Drawing.Size(860,20)
#$PfadFeld.Text = $Pfad #Bringt nur etwas, wenn $Pfad einen Anfangswert hat, da der Text nicht laufend aktualisiert wird
$Fenster.Controls.Add($PfadFeld)
# ListeOrdnernamen
$ListeOrdnernamen = New-Object System.Windows.Forms.ListBox
$ListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40)
$ListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20)
$ListeOrdnernamen.Height = 450
$ListeOrdnernamen.Font = New-Object System.Drawing.Font("Arial",12,[System.Drawing.FontStyle]::Regular)
foreach ($Laufwerk in $Laufwerke)
{
$ListeOrdnernamen.Items.Add($Laufwerk)
}
<#for ($i = 0; $i -lt 100; $i++)
{
$ListeOrdnernamen.Items.Add("Wert$i")
}#>
$Fenster.Controls.Add($ListeOrdnernamen)
<#
# Beispiel Textfeld
$Textfeld1 = New-Object System.Windows.Forms.Label
$Textfeld1.Location = New-Object System.Drawing.Size(7,500)
$Textfeld1.Size = New-Object System.Drawing.Size(130,15)
$Textfeld1.Text = "Beispiel Text"
$Fenster.Controls.Add($Textfeld1)
#>
# AuswählenButton
$AuswählenButton = New-Object System.Windows.Forms.Button
$AuswählenButton.Location = New-Object System.Drawing.Size(750,500)
$AuswählenButton.Size = New-Object System.Drawing.Size(100,30)
$AuswählenButton.Text = "Auswählen"
$AuswählenButton.Add_MouseClick({
# Aktion bei Klick
$Auswahl = $ListeOrdnernamen.SelectedItem
Write-Host "Gewählter Ordner/ Datei: " $Auswahl
$Pfad = $PfadFeld.Text
Write-Host "Vorheriger Pfad: " $Pfad
if ($Pfad.length -gt 0)
{
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
}
else
{
$Pfad = $Auswahl
}
Write-Host "Neuer Pfad: " $Pfad
#Erkennen, ob *.txt-Datei gewählt wurde -> ggf. return
if ($($Auswahl -match ".txt"))
{
Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
Write-Host "Dateityp: " $Pfad.GetType()
$Fenster.Dispose()
$Holder = NachAuswahl $Pfad
#return $Pfad[0]
}
$PfadFeld.Text = $Pfad
$Fenster.Text = $Auswahl
$ListeOrdnernamen.Items.Clear()
Write-Host "Pfadwert vor Übergabe: " $Pfad
$Unterorder = UnterOrdnerFinden $Pfad
$TxtDateien = TxtDateienFinden $Pfad
$Optionen = Optionen $Unterorder $TxtDateien
foreach ($Option in $Optionen)
{
# Write-Host "Option: " $Option
if ($Option.length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
})
$Fenster.Controls.Add($AuswählenButton)
# ZurückButton
$ZurückButton = New-Object System.Windows.Forms.Button
$ZurückButton.Location = New-Object System.Drawing.Size(10,500)
$ZurückButton.Size = New-Object System.Drawing.Size(100,30)
$ZurückButton.Text = "Zurück"
$ZurückButton.Add_MouseClick({
Write-Host "Pfad ausgabe: " $PfadFeld.Text
$Pfad = $PfadFeld.Text
if ($Pfad.Length -gt 3)
{
# Weiter mit Ordnern/Dateien
Write-Host "Ordner/ Dateien anzeigen"
$Pfad = Split-Path $Pfad
Write-Host "Neuer Pfad: " $Pfad
$PfadFeld.Text = $Pfad
$Fenster.Text = $(Split-Path $Pfad)
$ListeOrdnernamen.Items.Clear()
Write-Host "Pfadwert vor Übergabe: " $Pfad
$Unterorder = UnterOrdnerFinden $Pfad
$TxtDateien = TxtDateienFinden $Pfad
$Optionen = Optionen $Unterorder $TxtDateien
foreach ($Option in $Optionen)
{
# Write-Host "Option: " $Option
if ($Option.length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
}
elseif ($Pfad.Length -le 3)
{
# Weiter mit Laufwerken
Write-Host "Laufwerke anzeigen"
$Pfad = Split-Path $Pfad
Write-Host "Neuer Pfad: " $Pfad
$PfadFeld.Text = $Pfad
$Fenster.Text = "Laufwerke"
$ListeOrdnernamen.Items.Clear()
Write-Host "Pfadwert vor Übergabe: " $Pfad
$Laufwerke = LaufwerkeFinden $Pfad
foreach ($Laufwerk in $Laufwerke)
{
# Write-Host "Option: " $Option
if ($Laufwerk.length -gt 0)
{
$ListeOrdnernamen.Items.Add($Laufwerk)
}
}
}
else
{
# Fehler/ Nichts tun?
}
})
$Fenster.Controls.Add($ZurückButton)
$Fenster.Add_Shown({$Fenster.Activate()})
[void] $Fenster.ShowDialog()
}
Function NachAuswahl ($Pfad)
{
Write-Host "Name in Funktion: " $Pfad
Exit
}
Function UnterOrdnerFinden($Pfad)
{
#abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung
$Ordner = $(Get-Childitem $Pfad -Directory)
return $Ordner
}
Function LaufwerkeFinden()
{
$Laufwerke = $(Get-PSDrive | where {$_.Free}).Name
$i = 0
foreach($Laufwerk in $Laufwerke)
{
$Laufwerke[$i] = $Laufwerk + ":\"
$i++
}
return $Laufwerke
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
if ($TxtDateien.Length -gt 0)
{
return $(Split-Path $TxtDateien -Leaf)
}
else
{
return
}
}
Function Optionen([System.Object[]]$UnterOrdner, $TxtDateien)
{
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
$Optionen = $UnterOrdner + $TxtDateien
return $Optionen
}
Main
<#
$mailAddresses = ("sdasd@ddfsf.net","ououoizu@fdssd.com","ssdfdsfds@dsfds.org")
function FnShowDialog {
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
#~~< Form1 >~~~~~~~~~~~~~~~~~~~~~~~~~~
$Form1 = New-Object System.Windows.Forms.Form
$Form1.ClientSize = "347, 86"
$Form1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif", 9.75, [System.Drawing.FontStyle]::Regular, [System.Drawing.GraphicsUnit]::Point, ([System.Byte](0)))
$Form1.FormBorderStyle = "FixedToolWindow"
$Form1.MaximizeBox = $false
$Form1.MinimizeBox = $false
$Form1.BackColor = "White"
#~~< Label1 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Label1 = New-Object System.Windows.Forms.Label
$Label1.Location = "13, 13"
$Label1.Size = "217, 23"
$Label1.Text = "Bitte Mailadresse wählen:"
#~~< Button1 >~~~~~~~~~~~~~~~~~~~~~~~~~
$Button1 = New-Object System.Windows.Forms.Button
$Button1.Location = "259, 41"
$Button1.Size = "76, 26"
$Button1.Text = "OK"
$Button1.add_MouseClick({
$script:selectedMailAdr = $ComboBox1.SelectedItem
$Form1.dispose()
})
#~~< ComboBox1 >~~~~~~~~~~~~~~~~~~~~~~~~~~
$ComboBox1 = New-Object System.Windows.Forms.ComboBox
$ComboBox1.Location = "12, 40"
$ComboBox1.SelectedIndex = -1
$ComboBox1.DropDownStyle = "DropDownList"
$ComboBox1.Size = "231, 24"
$ComboBox1.Items.AddRange($mailAddresses)
$Form1.Controls.Add($Label1)
$Form1.Controls.Add($Button1)
$Form1.Controls.Add($ComboBox1)
[System.Windows.Forms.Application]::Run($Form1)
}
FnShowDialog
Write-Host $selectedMailAdr
#>
File diff suppressed because it is too large Load Diff
+359
View File
@@ -0,0 +1,359 @@
# Änderungsziel vs. 1: Funktion bei Klick auf "Auswählen" und "Zurück" auslagern
# Todo: "Zurück" auslagern
Function Main
{
#Ändern? Laufwerke sollten möglichst in der GUI initialisert werden
$Laufwerke = LaufwerkeFinden
[System.String]$Pfad = Gui $Laufwerke
Write-Host "Dateityp nach Übergabe: " $Pfad.GetType()
Write-Host "Datei ausgewählt mit dem Verzeichnis " $Pfad
}
Function Gui ($Laufwerke)
{
[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.Text = "Laufwerke"
$Fenster.Size = New-Object System.Drawing.Size(900,600) #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
# PfadFeld
$PfadFeld = New-Object System.Windows.Forms.TextBox
$PfadFeld.Location = New-Object System.Drawing.Size(10,10)
$PfadFeld.Size = New-Object System.Drawing.Size(860,20)
#$PfadFeld.Text = $Pfad #Bringt nur etwas, wenn $Pfad einen Anfangswert hat, da der Text nicht laufend aktualisiert wird
$PfadFeld.Add_KeyDown({
# Reaktion bei gedrückter Taste
if ($_.KeyCode -eq "Enter")
{
$Pfad = $PfadFeld.Text
# Soll zurückgeben: $true => existiert oder ist *.txt-Datei; $false => existiert nicht
$PfadExistiert = PfadExistiert $Pfad
Write-Host "Check Pfadtyp: " $PfadExistiert
if ($PfadExistiert)
{
Write-host "Pfad aktualisieren"
VerzeichnisAuswaehlen "" $Pfad
}
else
{
Write-Host "Else-Fall"
# Fehler-Fenster öffnen?
# Zurück zu Laufwerke
# In Funktion auslagern
$Pfad = ""
$Optionen = LaufwerkeFinden $Pfad
$PfadFeld.Text = ""
$Fenster.Text = "Laufwerke"
$ListeOrdnernamen.Items.Clear()
foreach ($Option in $Optionen)
{
if ($Option.Length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
}
}
})
$Fenster.Controls.Add($PfadFeld)
# ListeOrdnernamen
$ListeOrdnernamen = New-Object System.Windows.Forms.ListBox
$ListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40)
$ListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20)
$ListeOrdnernamen.Height = 450
foreach ($Laufwerk in $Laufwerke)
{
$ListeOrdnernamen.Items.Add($Laufwerk)
}
$ListeOrdnernamen.Add_DoubleClick({
Write-Host "In Liste per Doppelklick ausgewählt"
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
# Falls nicht aktiv ein Eintrag gewählt wurde, in den obersten navigieren
if ($($Auswahl.length -eq 0))
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
$Pfad = $PfadFeld.Text
Write-Host "Gewählter Ordner/ Datei: " $Auswahl
Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAuswaehlen $Pfad $Auswahl
})
$ListeOrdnernamen.Add_KeyDown({
# Reaktion bei gedrückter Taste
# In Funktion auslagern?
if ($_.KeyCode -eq "Enter")
{
Write-Host "Enter gedrückt"
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
# Falls nicht aktiv ein Eintrag gewählt wurde, in den obersten navigieren
if ($($Auswahl.length -eq 0))
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
$Pfad = $PfadFeld.Text
Write-Host "Gewählter Ordner/ Datei: " $Auswahl
Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAuswaehlen $Pfad $Auswahl
}
elseif ($_.KeyCode -eq "Back")
{
Write-Host "Back gedrückt"
Write-Host "Pfad ausgabe: " $PfadFeld.Text
$Pfad = $PfadFeld.Text
#Pfad aktualisieren
VerzeichnisZurueck $Pfad
}
else
{
Write-Host "Gedrückte Taste: " $_.KeyCode
}
})
$Fenster.Controls.Add($ListeOrdnernamen)
<#
# Beispiel Textfeld
$Textfeld1 = New-Object System.Windows.Forms.Label
$Textfeld1.Location = New-Object System.Drawing.Size(7,500)
$Textfeld1.Size = New-Object System.Drawing.Size(130,15)
$Textfeld1.Text = "Beispiel Text"
$Fenster.Controls.Add($Textfeld1)
#>
# ZurückButton
$ZurückButton = New-Object System.Windows.Forms.Button
$ZurückButton.Location = New-Object System.Drawing.Size(10,500)
$ZurückButton.Size = New-Object System.Drawing.Size(100,30)
$ZurückButton.Text = "Zurück"
$ZurückButton.Add_Click({
Write-Host "Pfad ausgabe: " $PfadFeld.Text
$Pfad = $PfadFeld.Text
#Pfad aktualisieren
VerzeichnisZurueck $Pfad
})
$ZurückButton.Add_KeyDown({
# In Funktion auslagern?
# Reaktion bei gedrückter Taste
if ($_.KeyCode -eq "Back")
{
Write-Host "Back gedrückt"
$Pfad = $PfadFeld.Text
VerzeichnisZurueck $Pfad
}
})
$Fenster.Controls.Add($ZurückButton)
# AuswählenButton
$AuswählenButton = New-Object System.Windows.Forms.Button
$AuswählenButton.Location = New-Object System.Drawing.Size(750,500)
$AuswählenButton.Size = New-Object System.Drawing.Size(100,30)
$AuswählenButton.Text = "Auswählen"
$AuswählenButton.Add_Click({
# Aktion bei Klick oder Enter
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
# Falls nicht aktiv ein Eintrag gewählt wurde, in den obersten navigieren
if ($($Auswahl.length -eq 0))
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
$Pfad = $PfadFeld.Text
Write-Host "Gewählter Ordner/ Datei: " $Auswahl
Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAuswaehlen $Pfad $Auswahl
})
$Fenster.Controls.Add($AuswählenButton)
$Fenster.Add_Shown({$Fenster.Activate()})
[void]$Fenster.ShowDialog()
}
Function VerzeichnisAuswaehlen ($Pfad, $Auswahl)
{
if ($Pfad.length -gt 0)
{
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
}
else
{
$Pfad = $Auswahl
}
#Erkennen, ob *.txt-Datei gewählt wurde -> ggf. Auswahl abgeschlossen
if ($($Auswahl -match ".txt"))
{
Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
Write-Host "Dateityp: " $Pfad.GetType()
$Fenster.Dispose()
NachAuswahl $Pfad
#return $Pfad
}
# Werte in Form aktualisieren
$PfadFeld.Text = $Pfad
$Fenster.Text = $Auswahl
$ListeOrdnernamen.Items.Clear()
$Optionen = Optionen $Pfad
Write-Host "Mögliche Optionen: " $Optionen
foreach ($Option in $Optionen)
{
# Write-Host "Option: " $Option
if ($Option.length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
Write-Host "Neuer Pfad: " $Pfad
return
}
Function NachAuswahl ($Pfad)
{
Write-Host "Auswahl abgeschlossen, ab jetzt .txt-Datei bearbeiten"
Write-Host "Name in Funktion: " $Pfad
#Exit # Wirft Fehler
}
Function VerzeichnisZurueck ($Pfad)
{
if ($Pfad.Length -gt 3)
{
# Weiter mit Ordnern/Dateien
Write-Host "Ordner/ Dateien anzeigen"
$Pfad = Split-Path $Pfad
Write-Host "Neuer Pfad : " $Pfad
Write-Host "Pfadwert vor Übergabe: " $Pfad
$Optionen = Optionen $Pfad
}
elseif ($Pfad.Length -le 3)
{
# Weiter mit Laufwerken
Write-Host "Laufwerke anzeigen"
$Pfad = ""
$Optionen = LaufwerkeFinden $Pfad
}
else
{
# Fehler/ Nichts tun?
# Ermitteln: wann tritt dieser Fall ein?
}
# In Ausgabe schreiben
$PfadFeld.Text = $Pfad
if ($Pfad.Length -gt 3)
{
$Fenster.Text = $(Split-Path $Pfad -Leaf)
}
else
{
$Fenster.Text = "Laufwerke"
}
$ListeOrdnernamen.Items.Clear()
foreach ($Option in $Optionen)
{
# Write-Host "Option: " $Option
if ($Option.Length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
return
}
Function PfadExistiert ($Pfad)
{
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 {$_.Free}).Name
$i = 0
foreach($Laufwerk in $Laufwerke)
{
$Laufwerke[$i] = $Laufwerk + ":\"
$i++
}
return $Laufwerke
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
if ($TxtDateien.Length -gt 0)
{
return $(Split-Path $TxtDateien -Leaf)
}
else
{
return
}
}
Function UnterOrdnerFinden($Pfad)
{
#abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung
$Ordner = $(Get-Childitem $Pfad -Directory)
return $Ordner
}
Function Optionen($Pfad)
{
# Unterordner und .txt-Dateien finden
# Typzuweisung nötig, da aus unbekanntem Grund sonst Unterordner eines Ordners, der mit "_" beginnt, nicht gefunden werden können
[System.Object[]]$UnterOrdner = UnterOrdnerFinden $Pfad
$TxtDateien = TxtDateienFinden $Pfad
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
$Optionen = $UnterOrdner + $TxtDateien
return $Optionen
}
Main
+387
View File
@@ -0,0 +1,387 @@
# Änderungsziel vs. 1: Funktion bei Klick auf "Auswählen" und "Zurück" auslagern
# Todo: "Zurück" auslagern
Function Main
{
#Ändern? Laufwerke sollten möglichst in der GUI initialisert werden
$Laufwerke = LaufwerkeFinden
[System.String]$Pfad = Gui $Laufwerke
# Write-Host "Dateityp nach Übergabe: " $Pfad.GetType()
Write-Host "Dateirückgabe in Main: " $Pfad
}
Function Gui ($Laufwerke)
{
[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.Text = "Laufwerke"
$Fenster.Size = New-Object System.Drawing.Size(900,600) #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
# PfadFeld
$PfadFeld = New-Object System.Windows.Forms.TextBox
$PfadFeld.Location = New-Object System.Drawing.Size(10,10)
$PfadFeld.Size = New-Object System.Drawing.Size(860,20)
#$PfadFeld.Text = $Pfad #Bringt nur etwas, wenn $Pfad einen Anfangswert hat, da der Text nicht laufend aktualisiert wird
$PfadFeld.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionPfadFeld $Taste
})
$Fenster.Controls.Add($PfadFeld)
# ListeOrdnernamen
$ListeOrdnernamen = New-Object System.Windows.Forms.ListBox
$ListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40)
$ListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20)
$ListeOrdnernamen.Height = 450
foreach ($Laufwerk in $Laufwerke)
{
$ListeOrdnernamen.Items.Add($Laufwerk)
}
$ListeOrdnernamen.Add_DoubleClick({
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
$Pfad = $PfadFeld.Text
Write-Host "Gewählter Ordner/ Datei: " $Auswahl
Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAuswaehlen $Pfad $Auswahl
})
$ListeOrdnernamen.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionListeOrdnernamen $Taste
})
$Fenster.Controls.Add($ListeOrdnernamen)
<#
# Beispiel Textfeld
$Textfeld1 = New-Object System.Windows.Forms.Label
$Textfeld1.Location = New-Object System.Drawing.Size(7,500)
$Textfeld1.Size = New-Object System.Drawing.Size(130,15)
$Textfeld1.Text = "Beispiel Text"
$Fenster.Controls.Add($Textfeld1)
#>
# ZurückButton
$ZurückButton = New-Object System.Windows.Forms.Button
$ZurückButton.Location = New-Object System.Drawing.Size(10,500)
$ZurückButton.Size = New-Object System.Drawing.Size(100,30)
$ZurückButton.Text = "Zurück"
$ZurückButton.Add_Click({
Write-Host "Pfad ausgabe: " $PfadFeld.Text
$Pfad = $PfadFeld.Text
#Pfad aktualisieren
VerzeichnisZurueck $Pfad
})
$ZurückButton.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionButtons $Taste
})
$Fenster.Controls.Add($ZurückButton)
# AuswählenButton
$AuswählenButton = New-Object System.Windows.Forms.Button
$AuswählenButton.Location = New-Object System.Drawing.Size(750,500)
$AuswählenButton.Size = New-Object System.Drawing.Size(100,30)
$AuswählenButton.Text = "Auswählen"
$AuswählenButton.Add_Click({
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
# Falls nicht aktiv ein Eintrag gewählt wurde, in den obersten navigieren
if ($($Auswahl.length -eq 0))
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
$Pfad = $PfadFeld.Text
Write-Host "Gewählter Ordner/ Datei: " $Auswahl
Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAuswaehlen $Pfad $Auswahl
})
$AuswählenButton.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionButtons $Taste
})
$Fenster.Controls.Add($AuswählenButton)
$Fenster.Add_Shown({$Fenster.Activate()})
[void]$Fenster.ShowDialog()
}
#--------------------------------------------------------- E N D E G U I ----------------------------------------------------------------------
Function VerzeichnisAuswaehlen ($Pfad, $Auswahl)
{
if ($Pfad.length -gt 0)
{
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
}
else
{
$Pfad = $Auswahl
}
#Falls nicht aktiv ein Eintrag ausgewählt wurde, den obersten wählen
if ($Auswahl.length -eq 0)
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
# Erkennen, ob *.txt-Datei gewählt wurde -> ggf. Auswahl abgeschlossen
if ($($Auswahl -match ".txt"))
{
Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
Write-Host "Dateityp: " $Pfad.GetType()
$Fenster.Dispose()
NachAuswahl $Pfad
#return $Pfad
}
AnzeigeAktualisieren $Pfad
return
}
Function NachAuswahl ($Pfad)
{
Write-Host "Auswahl abgeschlossen, ab jetzt .txt-Datei bearbeiten"
Write-Host "Name in Funktion: " $Pfad
#Exit # Wirft Fehler, sollte man sich aber sparen können
}
# Bekommt Pfad, stellt fest ob Laufwerke oder Ordner angezeigt werden müssen und aktualisiert entsprechend alles
# Für Laufwerke muss $Pfad = "" sein
Function AnzeigeAktualisieren ($Pfad)
{
Write-Host "Übergebener Pfad: " $Pfad
# Feststellen, ob Ordner oder Laufwerke angezeigt werden müssen
if ($Pfad.Length -ne "")
{
# Es handelt sich um Ordner
$Optionen = Optionen $Pfad
$Fenster.Text = $(Split-Path $Pfad -Leaf)
}
elseif ($Pfad.Length -eq "")
{
# Es handelt sich um Laufwerke
$Optionen = LaufwerkeFinden
$Pfad = ""
$Fenster.Text = "Laufwerke"
}
else
{
Write-Host "Fehler bei Anzeige aktualisieren"
# Fehler(?)
}
$PfadFeld.Text = $Pfad
$ListeOrdnernamen.Items.Clear()
foreach ($Option in $Optionen)
{
if ($Option.Length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
return
}
Function VerzeichnisZurueck ($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 zurück"
# Fehler/ Nichts tun?
# Ermitteln: wann tritt dieser Fall ein?
}
AnzeigeAktualisieren $Pfad
return
}
Function PfadExistiert ($Pfad)
{
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 TastenReaktionPfadFeld($Taste)
{
# Write-Host "Übergebene Taste: " $Taste
switch ($Taste){
"Return" {
# Write-Host "Enter gedrückt"
$Pfad = $PfadFeld.Text
# Write-Host "Pfad: " $Pfad
if ($Pfad -eq "")
{
# Laufwerke aktualisieren
AnzeigeAktualisieren $Pfad
}
elseif (PfadExistiert $Pfad)
{
$PfadEnde = $(Split-Path $Pfad -Leaf)
# Write-Host "Pfadende: " $PfadEnde
if ($($PfadEnde -match ".txt"))
{
Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
Write-Host "Dateityp: " $Pfad.GetType()
$Fenster.Dispose()
NachAuswahl $Pfad
#return $Pfad
}
else
{
AnzeigeAktualisieren $Pfad
}
}
else
{
AnzeigeAktualisieren ""
}
}
default {
# Write-Host "Gedrückte Taste: " $Taste
}
}
return
}
Function TastenReaktionListeOrdnernamen($Taste)
{
# Write-Host "Übergebene Taste: " $Taste
switch ($Taste){
"Return" {
# Write-Host "Enter gedrückt"
$Auswahl = $ListeOrdnernamen.SelectedItem
if ($($Auswahl.Length -eq 0))
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
$Pfad = $PfadFeld.Text
# Write-Host "Auswahl: " $Auswahl
# Write-Host "Pfad: " $Pfad
VerzeichnisAuswaehlen $Pfad $Auswahl
}
"Back" {
# Write-Host "Back gedrückt"
$Pfad = $PfadFeld.Text
# Write-Host "Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisZurueck $Pfad
}
default {
# Write-Host "Gedrückte Taste: " $Taste
}
}
return
}
Function TastenReaktionButtons($Taste)
{
# Write-Host "Übergebene Taste: " $Taste
switch ($Taste){
"Back" {
# Write-Host "Back gedrückt"
$Pfad = $PfadFeld.Text
# Write-Host "Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisZurueck $Pfad
}
default {
# Write-Host "Gedrückte Taste: " $Taste
}
}
return
}
Function LaufwerkeFinden()
{
$Laufwerke = $(Get-PSDrive | where {$_.Free}).Name
$i = 0
foreach($Laufwerk in $Laufwerke)
{
$Laufwerke[$i] = $Laufwerk + ":\"
$i++
}
return $Laufwerke
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
if ($TxtDateien.Length -gt 0)
{
return $(Split-Path $TxtDateien -Leaf)
}
else
{
return
}
}
Function UnterOrdnerFinden($Pfad)
{
#abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung
$Ordner = $(Get-Childitem $Pfad -Directory)
return $Ordner
}
Function Optionen($Pfad)
{
# Unterordner und .txt-Dateien finden
# Typzuweisung nötig, da aus unbekanntem Grund sonst Unterordner eines Ordners, der mit "_" beginnt, nicht gefunden werden können
[System.Object[]]$UnterOrdner = UnterOrdnerFinden $Pfad
$TxtDateien = TxtDateienFinden $Pfad
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
$Optionen = $UnterOrdner + $TxtDateien
return $Optionen
}
Main
@@ -0,0 +1,391 @@
# Änderungsziel vs. 1: Funktion bei Klick auf "Auswählen" und "Zurück" auslagern
# Knwon problem: Zugriffsversuch auf einen Ordner, für den der Nutzer keine Freigabe hat. Aktuell kein Lösungsansatz bekannt.
# Todo: siehe Zettel!
Function Main
{
$StartPfad = "R:\m.kraft\Excel Werte ändern"
$Pfad = Gui $StartPfad #$Laufwerke
# Write-Host "Dateityp nach Übergabe: " $Pfad.GetType()
Write-Host "Dateirückgabe in Main: " $Pfad
}
Function Gui ($StartPfad)
{
[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(900,600) #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
# PfadFeld
$PfadFeld = New-Object System.Windows.Forms.TextBox
$PfadFeld.Location = New-Object System.Drawing.Size(10,10)
$PfadFeld.Size = New-Object System.Drawing.Size(860,20)
$PfadFeld.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionPfadFeld $Taste
})
$Fenster.Controls.Add($PfadFeld)
# ListeOrdnernamen
$ListeOrdnernamen = New-Object System.Windows.Forms.ListBox
$ListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40)
$ListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20)
$ListeOrdnernamen.Height = 450
$ListeOrdnernamen.Add_DoubleClick({
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
$Pfad = $PfadFeld.Text
# Write-Host "Gewählter Ordner/ Datei: " $Auswahl
# Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAuswaehlen $Pfad $Auswahl
})
$ListeOrdnernamen.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionListeOrdnernamen $Taste
})
$Fenster.Controls.Add($ListeOrdnernamen)
<#
# Beispiel Textfeld
$Textfeld1 = New-Object System.Windows.Forms.Label
$Textfeld1.Location = New-Object System.Drawing.Size(7,500)
$Textfeld1.Size = New-Object System.Drawing.Size(130,15)
$Textfeld1.Text = "Beispiel Text"
$Fenster.Controls.Add($Textfeld1)
#>
# ZurückButton
$ZurückButton = New-Object System.Windows.Forms.Button
$ZurückButton.Location = New-Object System.Drawing.Size(10,500)
$ZurückButton.Size = New-Object System.Drawing.Size(100,30)
$ZurückButton.Text = "Zurück"
$ZurückButton.Add_Click({
# Write-Host "Pfad ausgabe: " $PfadFeld.Text
$Pfad = $PfadFeld.Text
#Pfad aktualisieren
VerzeichnisZurueck $Pfad
})
$ZurückButton.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionButtons $Taste
})
$Fenster.Controls.Add($ZurückButton)
# AuswählenButton
$AuswählenButton = New-Object System.Windows.Forms.Button
$AuswählenButton.Location = New-Object System.Drawing.Size(750,500)
$AuswählenButton.Size = New-Object System.Drawing.Size(100,30)
$AuswählenButton.Text = "Auswählen"
$AuswählenButton.Add_Click({
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
# Falls nicht aktiv ein Eintrag gewählt wurde, in den obersten navigieren
if ($($Auswahl.length -eq 0))
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
$Pfad = $PfadFeld.Text
# Write-Host "Gewählter Ordner/ Datei: " $Auswahl
# Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAuswaehlen $Pfad $Auswahl
})
$AuswählenButton.Add_KeyDown({
# Reaktion bei gedrückter Taste
$Taste = $_.KeyCode
TastenReaktionButtons $Taste
})
$Fenster.Controls.Add($AuswählenButton)
# Dieser Funktionsaufruf zerstört die Rückgabe, wenn er keiner Variable zugewiesen wird
$A = AnzeigeAktualisieren $StartPfad
$Fenster.Add_Shown({$Fenster.Activate()})
[void]$Fenster.ShowDialog()
$Rueckgabe = $PfadFeld.Text
Write-Host "Rückgabe: " $Rueckgabe
return $Rueckgabe
}
#--------------------------------------------------------- E N D E G U I ----------------------------------------------------------------------
Function VerzeichnisAuswaehlen ($Pfad, $Auswahl)
{
if ($Pfad.length -gt 0)
{
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
}
else
{
$Pfad = $Auswahl
}
#Falls nicht aktiv ein Eintrag ausgewählt wurde, den obersten wählen
if ($Auswahl.length -eq 0)
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
# Erkennen, ob *.txt-Datei gewählt wurde -> ggf. Auswahl abgeschlossen
if ($($Auswahl -match ".txt"))
{
Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
Write-Host "Dateityp: " $Pfad.GetType()
$Fenster.Dispose()
# Ist zwar sachlich gesehen unsinn, aber sonst funktioniert Return in der GUI nicht
$PfadFeld.Text = $Pfad
return
}
AnzeigeAktualisieren $Pfad
return
}
# Bekommt Pfad, stellt fest ob Laufwerke oder Ordner angezeigt werden müssen und aktualisiert entsprechend alles
# Für Laufwerke muss $Pfad = "" sein
Function AnzeigeAktualisieren ($Pfad)
{
Write-Host "Übergebener Pfad: " $Pfad
# Sicherstellen, dass es das Verzeichnis gibt
if ($($Pfad -eq "") -or $(PfadExistiert $Pfad))
{
# Feststellen, ob Ordner oder Laufwerke angezeigt werden müssen
if ($Pfad.Length -ne "")
{
# Es handelt sich um Ordner
$Optionen = Optionen $Pfad
$Fenster.Text = $(Split-Path $Pfad -Leaf)
}
elseif ($Pfad.Length -eq "")
{
# Es handelt sich um Laufwerke
$Optionen = LaufwerkeFinden
$Pfad = ""
$Fenster.Text = "Laufwerke"
}
else
{
Write-Host "Fehler bei Anzeige aktualisieren"
# Fehler(?)
}
$PfadFeld.Text = $Pfad
$ListeOrdnernamen.Items.Clear()
foreach ($Option in $Optionen)
{
if ($Option.Length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
}
else
{
AnzeigeAktualisieren ""
}
return
}
Function VerzeichnisZurueck ($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 zurück"
# Fehler/ Nichts tun?
# Ermitteln: wann tritt dieser Fall ein?
}
AnzeigeAktualisieren $Pfad
return
}
Function PfadExistiert ($Pfad)
{
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 TastenReaktionPfadFeld($Taste)
{
# Write-Host "Übergebene Taste: " $Taste
switch ($Taste){
"Return" {
# Write-Host "Enter gedrückt"
$Pfad = $PfadFeld.Text
# Write-Host "Pfad: " $Pfad
if ($Pfad -eq "")
{
# Laufwerke aktualisieren
AnzeigeAktualisieren $Pfad
}
elseif (PfadExistiert $Pfad)
{
$PfadEnde = $(Split-Path $Pfad -Leaf)
# Write-Host "Pfadende: " $PfadEnde
if ($($PfadEnde -match ".txt"))
{
Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
Write-Host "Dateityp: " $Pfad.GetType()
$Fenster.Dispose()
# Ist zwar sachlich gesehen unsinn, aber sonst funktioniert Return in der GUI nicht richtig
$PfadFeld.Text = $Pfad
return
}
else
{
AnzeigeAktualisieren $Pfad
}
}
else
{
AnzeigeAktualisieren ""
}
}
default {
# Write-Host "Gedrückte Taste: " $Taste
}
}
return
}
Function TastenReaktionListeOrdnernamen($Taste)
{
# Write-Host "Übergebene Taste: " $Taste
switch ($Taste){
"Return" {
# Write-Host "Enter gedrückt"
$Auswahl = $ListeOrdnernamen.SelectedItem
if ($($Auswahl.Length -eq 0))
{
$Auswahl = $ListeOrdnernamen.Items[0]
}
$Pfad = $PfadFeld.Text
# Write-Host "Auswahl: " $Auswahl
# Write-Host "Pfad: " $Pfad
VerzeichnisAuswaehlen $Pfad $Auswahl
}
"Back" {
# Write-Host "Back gedrückt"
$Pfad = $PfadFeld.Text
# Write-Host "Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisZurueck $Pfad
}
default {
# Write-Host "Gedrückte Taste: " $Taste
}
}
return
}
Function TastenReaktionButtons($Taste)
{
# Write-Host "Übergebene Taste: " $Taste
switch ($Taste){
"Back" {
# Write-Host "Back gedrückt"
$Pfad = $PfadFeld.Text
# Write-Host "Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisZurueck $Pfad
}
default {
# Write-Host "Gedrückte Taste: " $Taste
}
}
return
}
Function LaufwerkeFinden()
{
$Laufwerke = $(Get-PSDrive | where {$_.Free}).Name
$i = 0
foreach($Laufwerk in $Laufwerke)
{
$Laufwerke[$i] = $Laufwerk + ":\"
$i++
}
Write-Host "Rückgabe Laufwerke: " $Laufwerke
return $Laufwerke
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
if ($TxtDateien.Length -gt 0)
{
return $(Split-Path $TxtDateien -Leaf)
}
else
{
return
}
}
Function UnterOrdnerFinden($Pfad)
{
#abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung
$Ordner = $(Get-Childitem $Pfad -Directory)
return $Ordner
}
Function Optionen($Pfad)
{
# Unterordner und .txt-Dateien finden
# Typzuweisung nötig, da aus unbekanntem Grund sonst Unterordner eines Ordners, der mit "_" beginnt, nicht gefunden werden können
[System.Object[]]$UnterOrdner = UnterOrdnerFinden $Pfad
$TxtDateien = TxtDateienFinden $Pfad
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
$Optionen = $UnterOrdner + $TxtDateien
return $Optionen
}
Main
File diff suppressed because it is too large Load Diff
+264
View File
@@ -0,0 +1,264 @@
# Änderungsziel vs. 2: Return in Main realisieren durch einbau von EventHandler
# Ist nicht auf Stand von 2!!!!! 2 Aktuell besser!
# https://techwizard.cloud/2014/03/11/powershell-custom-gui-input-box-for-passing-values-to-variables/
# Todo: Alles
Function Main
{
#Ändern. Laufwerke sollten möglichst in der GUI initialisert werden
$Laufwerke = LaufwerkeFinden
[System.String]$Pfad = Gui $Laufwerke
Write-Host "Dateityp nach Übergabe: " $Pfad.GetType()
Write-Host "Datei ausgewählt mit dem Verzeichnis " $Pfad
}
Function Gui ($Laufwerke)
{
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.VisualBasic")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
# Eigenschaften Fenster
$Fenster = New-Object System.Windows.Forms.Form
$Fenster.Text = "Laufwerke"
$Fenster.Size = New-Object System.Drawing.Size(900,600) #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
# PfadFeld
$PfadFeld = New-Object System.Windows.Forms.TextBox
$PfadFeld.Location = New-Object System.Drawing.Size(10,10)
$PfadFeld.Size = New-Object System.Drawing.Size(860,20)
#$PfadFeld.Text = $Pfad #Bringt nur etwas, wenn $Pfad einen Anfangswert hat, da der Text nicht laufend aktualisiert wird
$Fenster.Controls.Add($PfadFeld)
# ListeOrdnernamen
$ListeOrdnernamen = New-Object System.Windows.Forms.ListBox
$ListeOrdnernamen.Location = New-Object System.Drawing.Size(10,40)
$ListeOrdnernamen.Size = New-Object System.Drawing.Size(860,20)
$ListeOrdnernamen.Height = 450
foreach ($Laufwerk in $Laufwerke)
{
$ListeOrdnernamen.Items.Add($Laufwerk)
}
<#for ($i = 0; $i -lt 100; $i++)
{
$ListeOrdnernamen.Items.Add("Wert$i")
}#>
$Fenster.Controls.Add($ListeOrdnernamen)
<#
# Beispiel Textfeld
$Textfeld1 = New-Object System.Windows.Forms.Label
$Textfeld1.Location = New-Object System.Drawing.Size(7,500)
$Textfeld1.Size = New-Object System.Drawing.Size(130,15)
$Textfeld1.Text = "Beispiel Text"
$Fenster.Controls.Add($Textfeld1)
#>
# AuswählenButton
$AuswählenButton = New-Object System.Windows.Forms.Button
$AuswählenButton.Location = New-Object System.Drawing.Size(750,500)
$AuswählenButton.Size = New-Object System.Drawing.Size(100,30)
$AuswählenButton.Text = "Auswählen"
$AuswählenButton.Add_MouseClick({
# Aktion bei Klick
# Variablen bestimmen zur Übergabe
$Auswahl = $ListeOrdnernamen.SelectedItem
$Pfad = $PfadFeld.Text
Write-Host "Gewählter Ordner/ Datei: " $Auswahl
Write-Host "Vorheriger Pfad: " $Pfad
# Pfad aktualisieren
VerzeichnisAktualisieren $Pfad $Auswahl
})
$Fenster.Controls.Add($AuswählenButton)
# ZurückButton
$ZurückButton = New-Object System.Windows.Forms.Button
$ZurückButton.Location = New-Object System.Drawing.Size(10,500)
$ZurückButton.Size = New-Object System.Drawing.Size(100,30)
$ZurückButton.Text = "Zurück"
$ZurückButton.Add_MouseClick({
Write-Host "Pfad ausgabe: " $PfadFeld.Text
$Pfad = $PfadFeld.Text
if ($Pfad.Length -gt 3)
{
# Weiter mit Ordnern/Dateien
Write-Host "Ordner/ Dateien anzeigen"
$Pfad = Split-Path $Pfad
Write-Host "Neuer Pfad: " $Pfad
$PfadFeld.Text = $Pfad
$Fenster.Text = $(Split-Path $Pfad)
$ListeOrdnernamen.Items.Clear()
Write-Host "Pfadwert vor Übergabe: " $Pfad
$Optionen = Optionen $Pfad
foreach ($Option in $Optionen)
{
# Write-Host "Option: " $Option
if ($Option.length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
}
elseif ($Pfad.Length -le 3)
{
# Weiter mit Laufwerken
Write-Host "Laufwerke anzeigen"
$Pfad = Split-Path $Pfad
Write-Host "Neuer Pfad: " $Pfad
$PfadFeld.Text = $Pfad
$Fenster.Text = "Laufwerke"
$ListeOrdnernamen.Items.Clear()
Write-Host "Pfadwert vor Übergabe: " $Pfad
$Laufwerke = LaufwerkeFinden $Pfad
foreach ($Laufwerk in $Laufwerke)
{
# Write-Host "Option: " $Option
if ($Laufwerk.length -gt 0)
{
$ListeOrdnernamen.Items.Add($Laufwerk)
}
}
}
else
{
# Fehler/ Nichts tun?
}
})
$Fenster.Controls.Add($ZurückButton)
$Fenster.Add_Shown({$Fenster.Activate()})
[void]$Fenster.ShowDialog()
$eventHandler = [System.EventHandler]{
$PfadFeld.Text
$ListeOrdnernamen.SelectedItem
$Fenster.Close()
}
# TestButton
$TestButton = New-Object System.Windows.Forms.Button
$TestButton.Location = New-Object System.Drawing.Size(355,500)
$TestButton.Size = New-Object System.Drawing.Size(100,30)
$TestButton.Text = "Test"
$TestButton.Add_Click($eventHandler)
$Fenster.Controls.Add($TestButton)
Write-Host "Ausgabe vor Ende Gui-Funktion, Pfad: " $Pfad
return $Pfad
}
Function VerzeichnisAktualisieren ($Pfad, $Auswahl)
{
if ($Pfad.length -gt 0)
{
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
}
else
{
$Pfad = $Auswahl
}
#Erkennen, ob *.txt-Datei gewählt wurde -> ggf. Auswahl abgeschlossen
if ($($Auswahl -match ".txt"))
{
Write-Host ".txt-Datei ausgewählt, Pfad: " $Pfad
Write-Host "Dateityp: " $Pfad.GetType()
$Fenster.Dispose()
#NachAuswahl $Pfad
return $Pfad
}
# Werte in Form aktualisieren
$PfadFeld.Text = $Pfad
$Fenster.Text = $Auswahl
$ListeOrdnernamen.Items.Clear()
$Optionen = Optionen $Pfad
Write-Host "Mögliche Optionen: " $Optionen
foreach ($Option in $Optionen)
{
# Write-Host "Option: " $Option
if ($Option.length -gt 0)
{
$ListeOrdnernamen.Items.Add($Option)
}
}
Write-Host "Neuer Pfad: " $Pfad
return
}
Function NachAuswahl ($Pfad)
{
Write-Host "Auswahl abgeschlossen, ab jetzt .txt-Datei bearbeiten"
Write-Host "Name in Funktion: " $Pfad
Exit
}
Function UnterOrdnerFinden($Pfad)
{
#abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung
$Ordner = $(Get-Childitem $Pfad -Directory)
return $Ordner
}
Function LaufwerkeFinden()
{
$Laufwerke = $(Get-PSDrive | where {$_.Free}).Name
$i = 0
foreach($Laufwerk in $Laufwerke)
{
$Laufwerke[$i] = $Laufwerk + ":\"
$i++
}
return $Laufwerke
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
if ($TxtDateien.Length -gt 0)
{
return $(Split-Path $TxtDateien -Leaf)
}
else
{
return
}
}
Function Optionen($Pfad)
{
# Unterordner und .txt-Dateien finden
$UnterOrdner = UnterOrdnerFinden $Pfad
$TxtDateien = TxtDateienFinden $Pfad
#Write-Host "Gefundenen Unterordner: " $Unterorder
#Write-Host "Gefundenen TxtDateien: " $TxtDateien
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
$Optionen = $UnterOrdner + $TxtDateien
#Write-Host "Optionen vor Übergabe: " $Optionen
return $Optionen
}
Main
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+43
View File
@@ -0,0 +1,43 @@
$mailAddresses = ("sdasd@ddfsf.net","ououoizu@fdssd.com","ssdfdsfds@dsfds.org")
function FnShowDialog {
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
#~~< Form1 >~~~~~~~~~~~~~~~~~~~~~~~~~~
$Form1 = New-Object System.Windows.Forms.Form
$Form1.ClientSize = "347, 86"
$Form1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif", 9.75, [System.Drawing.FontStyle]::Regular, [System.Drawing.GraphicsUnit]::Point, ([System.Byte](0)))
$Form1.FormBorderStyle = "FixedToolWindow"
$Form1.MaximizeBox = $false
$Form1.MinimizeBox = $false
$Form1.BackColor = "White"
#~~< Label1 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Label1 = New-Object System.Windows.Forms.Label
$Label1.Location = "13, 13"
$Label1.Size = "217, 23"
$Label1.Text = "Bitte Mailadresse wählen:"
#~~< Button1 >~~~~~~~~~~~~~~~~~~~~~~~~~
$Button1 = New-Object System.Windows.Forms.Button
$Button1.Location = "259, 41"
$Button1.Size = "76, 26"
$Button1.Text = "OK"
$Button1.add_MouseClick({
$script:selectedMailAdr = $ComboBox1.SelectedItem
$Form1.dispose()
})
#~~< ComboBox1 >~~~~~~~~~~~~~~~~~~~~~~~~~~
$ComboBox1 = New-Object System.Windows.Forms.ComboBox
$ComboBox1.Location = "12, 40"
$ComboBox1.SelectedIndex = -1
$ComboBox1.DropDownStyle = "DropDownList"
$ComboBox1.Size = "231, 24"
$ComboBox1.Items.AddRange($mailAddresses)
$Form1.Controls.Add($Label1)
$Form1.Controls.Add($Button1)
$Form1.Controls.Add($ComboBox1)
[System.Windows.Forms.Application]::Run($Form1)
}
FnShowDialog
Write-Host $selectedMailAdr
+10
View File
@@ -0,0 +1,10 @@
$Excel = New-Object -ComObject Excel.Application
$EDatei = $Excel.WorkBooks.Open("R:\m.kraft\Excel Werte ändern\Excel-Datei.xlsx")
$EBlatt = $EDatei.WorkSheets.item(1)
$Excel.Visible = $true
$EBlatt.Cells.Item(1,1) = 5
$EBlatt.Cells.Item(2,1) = 15
$EBlatt.Cells.Item(1,2) = 25
# [Zahl 1 => Zeile][Zahl 2 => Spalte]
$EDatei.Save()
$Excel.Quit()
+17
View File
@@ -0,0 +1,17 @@
$Laufwerke = $(Get-PSDrive | where {$_.Free}).Name
Write-Host "Laufwerke: " $Laufwerke
$i = 0
foreach($LaufwerksBuchstabe in $Laufwerke)
{
$Laufwerke[$i] = $LaufwerksBuchstabe + ":\"
Write-Host $LaufwerksBuchstabe
$i++
}
Write-Host "Laufwerke: " $Laufwerke
$Laufwerke[0] = $(Split-Path $Laufwerke[0])
Write-Host $Laufwerke[0]
#Write-Host $CMod
+29
View File
@@ -0,0 +1,29 @@
$Pfad = "R:\m.kraft\Excel Werte ändern"
$UnterOrdner = $(Get-ChildItem $Pfad -Directory)
$Zurueck = "Zurück"
$Ordner2 = @()
foreach ($Ordner in $UnterOrdner)
{
$Ordner2 += [System.String]$Ordner
}
$Optionen = $Ordner2 + $Zurueck
Write-Host "Optionen: " $Optionen
$Input = $Optionen | Out-GridView -Title "Name" -OutputMode Single
Write-Host "Auswahl: " $Input
<#
$Pfad = "R:\m.kraft\Excel Werte ändern"
$UnterOrdner = $(Get-ChildItem $Pfad -Directory)
[System.IO.DirectoryInfo]$Zurueck = "Zurück"
$Optionen = $UnterOrdner + $Zurueck
Write-Host "Optionen: " $Optionen
$Input = $Optionen | Out-GridView -Title "Name" -OutputMode Single
Write-Host "Auswahl: " $Input
#>
+5
View File
@@ -0,0 +1,5 @@
$Datei = Get-Content "R:\m.kraft\Excel Werte ändern\EA_Krüger_19.03.2020 - K.txt"
$LaengeDatei = $($Datei.Length)
Write-Host $LaengeDatei
+17
View File
@@ -0,0 +1,17 @@
function Menue
{
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
$Fenster = New-Object System.Windows.Forms.FolderBrowserDialog
#$Fenster.Title = "Datei öffnen"
#$Fenster.Filter = ".txt Dateien (*.txt)|*.txt" #Anzeigename|Dateityp
#$Fenster.ShowHelp = $true # Dadurch sieht der Explorer aus wie von Win 98 und die "Hilfe" funktioniert nicht
$Fenster.ShowDialog()
$Pfad = $Fenster.SelectedPath
return $Pfad
}
$Pfad = Menue
Write-Host "Rückgabe: " $Pfad
+17
View File
@@ -0,0 +1,17 @@
function Menue
{
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
$Fenster = New-Object System.Windows.Forms.OpenFileDialog
$Fenster.Title = "Datei öffnen"
$Fenster.Filter = ".txt Dateien (*.txt)|*.txt" #Anzeigename|Dateityp
#$Fenster.ShowHelp = $true # Dadurch sieht der Explorer aus wie von Win 98 und die "Hilfe" funktioniert nicht
$Fenster.ShowDialog()
$Pfad = $Fenster.FileName
return $Pfad
}
$Pfad = Menue
Write-Host "Rückgabe: " $Pfad
+107
View File
@@ -0,0 +1,107 @@
Write-Host $(Get-Date -Format "HH:mm:ss")
<#
$Excel = New-Object -ComObject Excel.Application
$EDatei = $Excel.WorkBooks.Open("R:\m.kraft\Excel Werte ändern\Excel-Datei.xlsx")
$EBlatt = $EDatei.WorkSheets.item(1)
$Excel.Visible = $false
#>
$Pfad = "R:\m.kraft\Excel Werte ändern\EA_Krüger_19.03.2020.txt"
$i = 1
$DIs = @()
$DQs = @()
$Fehler = @()
$Datei = Get-Content $Pfad
$ZuDI = @(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)
$ZuDQ = @(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)
foreach ($Eintrag in $Datei)
{
$Eintragszeile = $Eintrag.split("'")
<#Write-Host "Gesamter eintrag " $Eintragszeile
Write-Host "Eintrag 1 " $Eintragszeile[0]
Write-Host "Eintrag 2 " $Eintragszeile[1]
Write-Host "Eintrag 3 " $Eintragszeile[2]
Write-Host "Eintrag 4 " $Eintragszeile[3]#>
$EAZahl = $Eintragszeile[1]
$EAKommentar = $Eintragszeile[3]
$EAZahl = $EAZahl.TrimStart("'")
#$EAZahl = $EAZahl.TrimEnd("'")
#$EAKommentar = $EAKommentar.TrimStart("'")
$EAKommentar = $EAKommentar.TrimEnd("'")
if ($($($EAZahl.Substring(0,2)) -in $ZuDI))
{
$EAZahl = $EAZahl -replace("[a-zA-Z]", "")
$LaengeEAZahl = $($EAZahl.Length - 1)
$EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
$EAZahl = "DI" + $EAZahl
$DIs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
}
elseif ($($($EAZahl.Substring(0,2)) -in $ZuDQ))
{
$EAZahl = $EAZahl -replace("[a-zA-Z]", "")
$LaengeEAZahl = $($EAZahl.Length - 1)
$EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
$EAZahl = "DQ" + $EAZahl
$DQs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
}
else
{
Write-Host "Achtung, Fehler bei $EAZahl $EAKommentar"
$Fehler += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
#fehler
}
#Write-Host $EAZahl
#Write-Host $EAKommentar
#$EBlatt.Cells.Item($i,1) = $EAZahl
#$EBlatt.Cells.Item($i,2) = $EAKommentar
$i++
}
#$EDatei.Save()
#$Excel.Quit()
$DIs = $DIs | Sort-Object "Name"
$Gleiche = @()
for ($j = 0; $j -lt $($DIs.Count -1); $j++)
{
$IstGleich = $($DIs[$j].Name -eq $DIs[$($j+1)].Name)
if ( $IstGleich )
{
#Eintrag hinzufügen
if ( -not $($Gleiche[-1].Zeile -eq $DIs[$j].Zeile))
{
$Gleiche += $DIs[$j]
}
$Gleiche += $DIs[$($j +1)]
Write-Host "Gleiche: " $Gleiche
}
}
# $Gleiche = $Gleiche.Zeile | select -Unique
if ($($Gleiche.Length) -gt 0)
{
Write-Host "Folgende Eingänge sind doppelt belegt"
Write-Host "Eingang Zeile (Excel)"
foreach ($Gleich in $Gleiche)
{
Write-Host $Gleich.Name " " $Gleich.Zeile
}
}
else
{
Write-Host "Es gibt keine doppelt belegten Eingänge!"
}
Write-Host $(Get-Date -Format "HH:mm:ss")
+8
View File
@@ -0,0 +1,8 @@
$Pfad = "R:\m.kraft\Excel Werte ändern\Test-Skripte\EinstellungenSkriptKonvertierung2.txt"
$DateiInhalt = Get-Content $Pfad
$Zeile1 = $DateiInhalt[0]
Clear-Content -Path $Pfad
Add-Content -Path $Pfad $Zeile1
Add-Content -Path $Pfad "x"
+14
View File
@@ -0,0 +1,14 @@
Function ExcelDateiNameErstellen ($EingestellterName, $PfadUrsprungsdatei, $PfadZielDatei)
{
$NameUrsprungsdatei = Split-Path $PfadUrsprungsdatei -Leaf
$NameUrsprungsdateiLaenge = $NameUrsprungsdatei.Length
$NameUrsprungsdateiKurz = $NameUrsprungsdatei.Substring(0, $($NameUrsprungsdateiLaenge - 4))
$GesamtPfadZielDatei = $PfadZielDatei + "\" + $EingestellterName.Replace("[Ursprungsdatei]",$NameUrsprungsdateiKurz) + ".xlsx"
return $GesamtPfadZielDatei
}
$Name = ExcelDateiNameErstellen "EA_Ausgabe" "R:\m.kraft\Excel Werte ändern\EA_Krüger_19.03.2020.xlsx" "R:\m.kraft\Excel Werte ändern\_Test"
Write-Host $Name
+50
View File
@@ -0,0 +1,50 @@
function KompatibilitaetsCheck ($SpeicherOrt){
$Inhalte = Get-Content $SpeicherOrt
if ($Inhalte.Length -eq 0) {
Write-Host "Inhalte: $Inhalte"
return $false
}
else {
foreach ($Zeile in $Inhalte) {
if (-not ($Zeile -match "'\w+','.+'") -and $Zeile.Length -gt 0) {
return $false
}
}
}
return $true
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
$SaubereTxtS = @()
if ($TxtDateien.Length -gt 0)
{
foreach ($TxtDatei in $TxtDateien) {
if (KompatibilitaetsCheck $TxtDatei) {
$SaubereTxtS += $TxtDatei
}
else {
Write-Host "Aussortierte Dateien: $TxtDatei"
}
}
return $(Split-Path $SaubereTxtS -Leaf)
}
else
{
return
}
}
Write-Host "------------------------------------------------------------"
$SZ = Get-Date -Format "HH:mm:ss"
Write-Host "Startzeit $SZ"
$Dateien = TxtDateienFinden "R:\m.kraft\Excel Werte ändern"
Write-Host "Dateien: $Dateien"
$EZ = Get-Date -Format "HH:mm:ss"
Write-Host "Endzeit " $EZ
+62
View File
@@ -0,0 +1,62 @@
$SPSAnschluesse = @([PSCustomObject]@{
Name = "E100.5"
Kommentar = "Kommentar E100.5"
Zeile = "5"
})
$SPSAnschluesse += @([PSCustomObject]@{
Name = "E200.0"
Kommentar = "Kommentar E200.0"
Zeile = "7"
})
$SPSAnschluesse += @([PSCustomObject]@{
Name = "E100.0"
Kommentar = "Kommentar 100.0"
Zeile = "4"
})
Clear-Variable SPSFehlendeAnschluesse
#Schleife fuer SPS
$SPSAnschluesse = $SPSAnschluesse | Sort-Object "Name"
Write-Host "Uebergebene SPS-Anschluesse: " $SPSAnschluesse
foreach ($SPSAnschluss in $SPSAnschluesse) {
# $SPSSubAnschlussLetzteStelle = @()
Write-Host "Aktueller SPS-Anschluss: " $SPSAnschluss.Name
#Write-Host "Laenge SPSAnschluss: " $SPSAnschluss.Name.Length
$SPSAnschlussBauteil = $SPSAnschluss.Name.Substring(0,$SPSAnschluss.Name.Length - 2)
Clear-Variable SPSFehlendeAnschluesse
$SollAnschluesse = @(0,1,2,3,4,5,6,7)
foreach ($SPSSubAnschluss in $SPSAnschluesse) {
Write-Host "Aktueller Sub-Anschluss: " $SPSSubAnschluss.Name
$SPSSubAnschlussBauteil = $SPSSubAnschluss.Name.Substring(0,$SPSSubAnschluss.Name.Length - 2)
if ($SPSSubAnschlussBauteil -eq $SPSAnschlussBauteil) {
Write-Host "Fall eingetreten: Vorletzte Stelle von SPS und SubSPS sind gleich"
$SPSSubAnschlussLetzteStelle = $($SPSSubAnschluss.Name).Substring($SPSSubAnschluss.Name.Length - 1,1)
Write-Host "Inhalt von SPSSubAnschlussLetzteStelle: " $SPSSubAnschlussLetzteStelle
Write-Host "Alte SollAnschluesse: " $SollAnschluesse
$SollAnschluesse = $SollAnschluesse | Where-Object {$_ -ne $SPSSubAnschlussLetzteStelle}
Write-Host "Neue SollAnschluesse: " $SollAnschluesse
}
}
Write-Host "Uebergebene fehlende Anschluesse: " $SollAnschluesse
foreach ($FehlendenAnschluss in $SollAnschluesse) {
Write-Host "Aktuell fehlender Anschluss: " $FehlendenAnschluss
$SPSName = $SPSAnschluss.Name
$BMKZahl = $($($SPSName.Substring(0,$SPSName.Length - 1)) + $FehlendenAnschluss)
$SPSAnschluesse += @([PSCustomObject]@{
Name = $BMKZahl
Kommentar = ""
#Zeile = "" wird nich gebraucht, da hier keine Duplikate auftreten koennen. Ausserdem gibt es ohnehin keine zugehoerige Zeile in der UrsprungsDatei
})
Write-Host "Neue SPSAnschluesse: " $SPSAnschluesse
}
}
$SPSAnschluesse = $SPSAnschluesse | Sort-Object "Name"
Write-Host "Neue SPSAnschluesse sortiert: " $SPSAnschluesse
Write-Host ""
Write-Host ""
Write-Host "------------------------------------------------------------------------------------------------------------------------------------------------------------"
Write-Host ""
Write-Host ""
+3
View File
@@ -0,0 +1,3 @@
$ZielDatei = "R:\m.kraft\ExcelWerteÄndern\Pre-Veröffentlicht\PAG_Alle_Heber_Export_Brics.xlsx"
$ZielDateiBMK = $ZielDatei.Substring(0,$Zieldatei.Length -5) + "_BMK" + $ZielDatei.Substring($Zieldatei.Length -5)
Write-Host $ZielDateiBMK
+106
View File
@@ -0,0 +1,106 @@
Write-Host $(Get-Date -Format "HH:mm:ss")
$Excel = New-Object -ComObject Excel.Application
$EDatei = $Excel.WorkBooks.Open("R:\m.kraft\Excel Werte ändern\Realtest\IO_EXP_TBS_14.01.2021.xlsx")
$EBlatt = $EDatei.WorkSheets.item(1)
$Excel.Visible = $false
$Pfad = "R:\m.kraft\Excel Werte ändern\Realtest\IO_EXP_TBS_14.01.2021.txt"
$i = 1
$DIs = @()
$DQs = @()
$Fehler = @()
$Datei = Get-Content $Pfad
$ZuDI = @(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)
$ZuDQ = @(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)
foreach ($Eintrag in $Datei)
{
$Eintragszeile = $Eintrag.split("'")
<#Write-Host "Gesamter eintrag " $Eintragszeile
Write-Host "Eintrag 1 " $Eintragszeile[0]
Write-Host "Eintrag 2 " $Eintragszeile[1]
Write-Host "Eintrag 3 " $Eintragszeile[2]
Write-Host "Eintrag 4 " $Eintragszeile[3]#>
$EAZahl = $Eintragszeile[1]
$EAKommentar = $Eintragszeile[3]
$EAZahl = $EAZahl.TrimStart("'")
#$EAZahl = $EAZahl.TrimEnd("'")
#$EAKommentar = $EAKommentar.TrimStart("'")
$EAKommentar = $EAKommentar.TrimEnd("'")
if ($($($EAZahl.Substring(0,2)) -in $ZuDI))
{
$EAZahl = $EAZahl -replace("[a-zA-Z]", "")
$LaengeEAZahl = $($EAZahl.Length - 1)
$EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
$EAZahl = "E" + $EAZahl
$DIs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
}
elseif ($($($EAZahl.Substring(0,2)) -in $ZuDQ))
{
$EAZahl = $EAZahl -replace("[a-zA-Z]", "")
$LaengeEAZahl = $($EAZahl.Length - 1)
$EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
$EAZahl = "A" + $EAZahl
$DQs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
}
else
{
Write-Host "Achtung, Fehler bei $EAZahl $EAKommentar"
$DQs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
#fehler
}
#Write-Host $EAZahl
#Write-Host $EAKommentar
$EBlatt.Cells.Item($i,1) = $EAZahl
$EBlatt.Cells.Item($i,2) = $EAKommentar
$i++
}
$EDatei.Save()
$Excel.Quit()
$DIs = $DIs | sort "Name"
$Gleiche = @()
for ($j = 0; $j -lt $($DIs.Count -1); $j++)
{
$IstGleich = $($DIs[$j].Name -eq $DIs[$($j+1)].Name)
if ( $IstGleich )
{
#Eintrag hinzufügen
if ( -not $($Gleiche[-1].Zeile -eq $DIs[$j].Zeile))
{
$Gleiche += $DIs[$j]
}
$Gleiche += $DIs[$($j +1)]
Write-Host "Gleiche: " $Gleiche
}
}
# $Gleiche = $Gleiche.Zeile | select -Unique
if ($($Gleiche.Length) -gt 0)
{
Write-Host "Folgende Eingänge sind doppelt belegt"
Write-Host "Eingang Zeile (Excel)"
foreach ($Gleich in $Gleiche)
{
Write-Host $Gleich.Name " " $Gleich.Zeile
}
}
else
{
Write-Host "Es gibt keine doppelt belegten Eingänge!"
}
Write-Host $(Get-Date -Format "HH:mm:ss")
+106
View File
@@ -0,0 +1,106 @@
Write-Host $(Get-Date -Format "HH:mm:ss")
$Excel = New-Object -ComObject Excel.Application
$EDatei = $Excel.WorkBooks.Open("R:\m.kraft\Excel Werte ändern\Excel-Datei.xlsx")
$EBlatt = $EDatei.WorkSheets.item(1)
$Excel.Visible = $false
$Pfad = "R:\m.kraft\Excel Werte ändern\EA_Krüger_19.03.2020 - Kurz.txt"
$i = 1
$DIs = @()
$DQs = @()
$Fehler = @()
$Datei = Get-Content $Pfad
$ZuDI = @(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)
$ZuDQ = @(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)
foreach ($Eintrag in $Datei)
{
$Eintragszeile = $Eintrag.split("'")
<#Write-Host "Gesamter eintrag " $Eintragszeile
Write-Host "Eintrag 1 " $Eintragszeile[0]
Write-Host "Eintrag 2 " $Eintragszeile[1]
Write-Host "Eintrag 3 " $Eintragszeile[2]
Write-Host "Eintrag 4 " $Eintragszeile[3]#>
$EAZahl = $Eintragszeile[1]
$EAKommentar = $Eintragszeile[3]
$EAZahl = $EAZahl.TrimStart("'")
#$EAZahl = $EAZahl.TrimEnd("'")
#$EAKommentar = $EAKommentar.TrimStart("'")
$EAKommentar = $EAKommentar.TrimEnd("'")
if ($($($EAZahl.Substring(0,2)) -in $ZuDI))
{
$EAZahl = $EAZahl -replace("[a-zA-Z]", "")
$LaengeEAZahl = $($EAZahl.Length - 1)
$EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
$EAZahl = "DI" + $EAZahl
$DIs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
}
elseif ($($($EAZahl.Substring(0,2)) -in $ZuDQ))
{
$EAZahl = $EAZahl -replace("[a-zA-Z]", "")
$LaengeEAZahl = $($EAZahl.Length - 1)
$EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
$EAZahl = "DQ" + $EAZahl
$DQs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
}
else
{
Write-Host "Achtung, Fehler bei $EAZahl $EAKommentar"
$Fehler += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
#fehler
}
#Write-Host $EAZahl
#Write-Host $EAKommentar
$EBlatt.Cells.Item($i,1) = $EAZahl
$EBlatt.Cells.Item($i,2) = $EAKommentar
$i++
}
$EDatei.Save()
$Excel.Quit()
$DIs = $DIs | Sort-Object "Name"
$Gleiche = @()
for ($j = 0; $j -lt $($DIs.Count -1); $j++)
{
$IstGleich = $($DIs[$j].Name -eq $DIs[$($j+1)].Name)
if ( $IstGleich )
{
#Eintrag hinzufügen
if ( -not $($Gleiche[-1].Zeile -eq $DIs[$j].Zeile))
{
$Gleiche += $DIs[$j]
}
$Gleiche += $DIs[$($j +1)]
Write-Host "Gleiche: " $Gleiche
}
}
# $Gleiche = $Gleiche.Zeile | select -Unique
if ($($Gleiche.Length) -gt 0)
{
Write-Host "Folgende Eingänge sind doppelt belegt"
Write-Host "Eingang Zeile (Excel)"
foreach ($Gleich in $Gleiche)
{
Write-Host $Gleich.Name " " $Gleich.Zeile
}
}
else
{
Write-Host "Es gibt keine doppelt belegten Eingänge!"
}
Write-Host $(Get-Date -Format "HH:mm:ss")
+39
View File
@@ -0,0 +1,39 @@
$ZuDI = @("P", "DI", "SF")
$EAZahl = "PF0001"
$EANurZahl = $EAZahl -replace "[\d]"
Write-Host $EANurZahl
if ($EANurZahl -in $ZuDI) {
Write-Host "Ist enthalten"
}
else {
Write-Host "Ist nicht enthalten"
}
#Write-Host $($($EAZahl.Substring(0,2)) -in $ZuDI)
<# foreach ($Eingang in $ZuDI) {
if ($EAZahl.Contains($Eingang)) {
Write-Host "Ist enthalten bei Eingang " $Eingang
}
# Todo: Schleife verlassen, nachdem ersten positives Ergebnis vorliegt
# Was passiert,
} #>
<# if ($($EAZahl -match $ZuDI )) {
Write-Host "Ist enthalten"
}
else {
Write-Host "Ist nicht enthalten"
}
#>
<#
if ($EAZahl -in $ZuDI)
{
$EAZahl = $EAZahl.Remove(0,2)
$EAZahl = "DI" + $EAZahl
#replace
}#>
+7
View File
@@ -0,0 +1,7 @@
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)][String]$var1,
[String]$var2
)
Write-Host $var1
+13
View File
@@ -0,0 +1,13 @@
$EAZahl = "004"
$LaengeEAZahl = $EAZahl.Length
Write-Host $LaengeEAZahl
$Teil1 = $EAZahl.Substring(0,$($LaengeEAZahl - 1))
Write-Host $Teil1
$Teil2 = $EAZahl.Substring($($LaengeEAZahl - 1))
Write-Host $Teil2
$NeueEAZahl = $($Teil1 + "." + $Teil2)
Write-Host $NeueEAZahl
+32
View File
@@ -0,0 +1,32 @@
<#
$Verzeichnis = Read-Host -Prompt "Zielverzeichnis: "
Write-Host $Verzeichnis
$IstVorhanden = $(Test-Path $Verzeichnis)
Write-Host $IstVorhanden
#>
# Gültigen Pfad eingeben und anschließend in diesem Verzeichnis .txt-Datei öffnen
$UngueltigerPfad = $true
while ($UngueltigerPfad)
{
$Pfad = Read-Host -Prompt "Zielverzeichnis: "
$UngueltigerPfad = -not $(Test-Path $Pfad -PathType Container)
}
# Write-Host "Gültigen Pfad angegeben"
$Dateien = split-path $(Get-ChildItem $Pfad\*.txt) -Leaf
Write-Host $Dateien
$Input = $Dateien | Out-GridView -PassThru -Title "Datei wählen"
Write-Host $Input
$DateiPfad = Join-Path -path $Pfad -childpath $Input -Resolve
Write-Host $DateiPfad
+25
View File
@@ -0,0 +1,25 @@
$Laufwerke = $(Get-PSDrive | where {$_.Free}).Name
Write-Host "Laufwerke: " $Laufwerke
$Pfad = "R:\m.kraft\Excel Werte ändern\"
Write-Host "Pfad: " $Pfad
$AktuelleUnterordner = Get-ChildItem $Pfad -Directory
$AktuelleTxtDateien = $(Get-ChildItem $Pfad\*.txt)
if ($AktuelleTxtDateien.length -gt 0)
{
$AktuelleTxtDateien = $(Split-Path $AktuelleTxtDateien -Leaf)
}
Write-Host "Unterordner: " $AktuelleUnterordner
Write-Host "Dateien: " $AktuelleTxtDateien
<#
Schleife 1: Solange aktiv, bis Verzeichniswahl auf true ist
Schleife 2: (In Schleife 1) SOlange aktiv, bis Ordnerwahl auf true ist
Oder:
[bool] $DateiauswahlAktiv = $true, bis eine Datei gewählt ist. Auch mit 2 Schleifen.
#>
# Start
+16
View File
@@ -0,0 +1,16 @@
# Excel-Datei erstellen
$DateiPfad = "R:\m.kraft\Excel Werte ändern\_Test\Neuer Ordner\Test-Datei.xlsx"
$ExcelDatei = New-Object -ComObject excel.application
$Mappe = $ExcelDatei.Workbooks.Item(1) # Rechte Mappe
$Blatt1 = $Mappe.WorkSheets.Add()
$Blatt1.Name = "PLC Tags"
$Blatt2 = $Mappe.WorkSheets.Add() # Linke Mappe
$Blatt2.Name = "Mappe2"
$Mappe.SaveAs($DateiPfad)
$Mappe.Close()
$ExcelDatei.Quit()
+143
View File
@@ -0,0 +1,143 @@
# Wirft aktuell Fehler, wenn man zurück in das Laufwerkverzeichnis geht!
Function Main
{
$LaufwerkAuswahlAktiv = $true
$DateiAuswahlAktiv = $true
while ($LaufwerkAuswahlAktiv)
{
$Laufwerke = LaufwerkeFinden
Write-Host "Gefundene Laufwerke: " $Laufwerke
$Pfad = Laufwerkwaehlen $Laufwerke
Write-Host "Gewähltes Laufwerk: " $Pfad
$LaufwerkAuswahlAktiv = $false
$DateiAuswahlAktiv= $true
while ($DateiAuswahlAktiv)
{
$UnterOrdner = UnterOrdnerFinden $Pfad
Write-Host "Mögliche Unterordner: " $UnterOrdner
$TxtDateien = TxtDateienFinden $Pfad
Write-Host "Mögliche txt Dateien: " $TxtDateien
#-> Fall einbauen, wenn es weder Unterordner noch TxtDateien gibt?
$AuswahlOptionen = Optionen $UnterOrdner $TxtDateien
Write-Host "Auswahloptionen: " $AuswahlOptionen
$Auswahl = OrdnerWaehlen $Pfad $AuswahlOptionen
Write-Host "Gewählte Option: " $Auswahl
if ($Auswahl -ne "Zurueck")
{
$Pfad = Join-Path -Path $Pfad -ChildPath $Auswahl -Resolve
}
else
{
Write-Host "Eine Ordnerebene zurück"
$Pfad = Split-Path $Pfad
Write-Host "Neuer Pfad: " $Pfad
if ($($Pfad.Length -le 3))
{
Write-Host "Der Pfad ist kürzer als 3 Zeichen -> Laufwerk wählen"
$DateiAusahlAktiv = $false
}
}
Write-Host "Aktueller Pfad : " $Pfad
if ($($Auswahl -match ".txt")) #Besser: Letzte 4 Zeichen von auswahl nehmen und dann -eq
{
Write-Host "Es handelt sich um eine .txt-Datei"
$DateiauswahlAktiv = $false
}
Write-Host "--------------------------------------------------------------------------------------"
# Zwei ifs
#1 .txt-Datei gewählt -> $DateiAuswahlAktiv = $false
#2 Pfad ist aufgrund von "Zurück" leer (kein Laufwerk mehr) -> $LaufwerkauswahlAktiv = $true
}
Write-Host "Gewählte Datei: " $Pfad
}
}
Function LaufwerkeFinden()
{
$Laufwerke = $(Get-PSDrive | where {$_.Free}).Name
$i = 0
foreach($Laufwerk in $Laufwerke)
{
$Laufwerke[$i] = $Laufwerk + ":\"
$i++
}
return $Laufwerke
}
Function Laufwerkwaehlen($Laufwerke)
{
$Eingabe = $Laufwerke | Out-GridView -PassThru -Title "Laufwerke"
return $Eingabe
}
Function UnterOrdnerFinden($Pfad)
{
#abfangen: keine Ordner vorhanden -> nicht nötig, da keine weitere Verarbeitung
return $(Get-Childitem $Pfad -Directory)
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
if ($TxtDateien.Length -gt 0)
{
return $(Split-Path $TxtDateien -Leaf)
}
else
{
return
}
}
Function Optionen($UnterOrdner, $TxtDateien)
{
#Gibt aktuell auch Index und Typ (System.IO.DirectoryInfo bzw. System.String) zurück
$OrdnerFormat = @()
$TxtDateienFormat = @()
foreach ($Ordner in $UnterOrdner)
{
$OrdnerFormat += [System.String]$Ordner
}
foreach ($TxtDatei in $TxtDateien)
{
$TxtDateienFormat += [System.String]$TxtDatei
}
$Optionen = $OrdnerFormat + $TxtDateienFormat + "Zurueck"
return $Optionen
}
Function OrdnerWaehlen($Pfad, $AuswahlOptionen)
{
if ($Pfad -eq "")
{
$Pfad = "Laufwerke"
}
$Eingabe = $AuswahlOptionen | Out-GridView -PassThru -Title $Pfad
Write-Host "Gewählte Option in Funktion: " $Input
return $Eingabe
}
Main
+49
View File
@@ -0,0 +1,49 @@
function KompatibilitaetsCheck ($SpeicherOrt){
$Inhalte = Get-Content $SpeicherOrt
if ($Inhalte.Length -eq 0) {
Write-Host "Laenge = 0"
return $false
}
else {
foreach ($Zeile in $Inhalte) {
if (-not ($Zeile -match "'\w+','.+'") -and $Zeile.Length -gt 0) {
Write-Host "Fehler in Zeile" $Zeile
return $false
}
}
}
return $true
}
Function TxtDateienFinden($Pfad)
{
$TxtDateien = $(Get-Childitem $Pfad\*.txt)
$KompatibleTxtDateien = @()
if ($TxtDateien.Length -gt 0)
{
foreach ($TxtDatei in $TxtDateien) {
Write-Host "Aktuelle txt-Datei: " $TxtDatei
if (KompatibilitaetsCheck $TxtDatei) {
$KompatibleTxtDateien += $TxtDatei
Write-Host " Datei Akzeptiert"
}
else {
Write-Host " Datei nicht Akzeptiert"
}
}
if ($KompatibleTxtDateien.Length -gt 0) {
return $(Split-Path $KompatibleTxtDateien -Leaf)
}
else {
Return
}
}
else
{
return
}
}
TxtDateienFinden "Z:\Automatisierung\WSCAD\IMPORT-EXPORT_WSCAD\SKRIPT-KONVERTIERUNG\Dieses Verzeichnis bitte nicht als Ablage nutzen"