Unterordner dazu
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -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
@@ -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
@@ -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
|
||||
@@ -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()
|
||||
@@ -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
|
||||
@@ -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
|
||||
#>
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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")
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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 ""
|
||||
@@ -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
|
||||
@@ -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")
|
||||
@@ -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")
|
||||
@@ -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
|
||||
}#>
|
||||
@@ -0,0 +1,7 @@
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(Mandatory=$true)][String]$var1,
|
||||
[String]$var2
|
||||
)
|
||||
Write-Host $var1
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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()
|
||||
@@ -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
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user