Erster Commit

This commit is contained in:
zed
2026-03-13 09:53:40 +01:00
commit 5ebcad02ed
3945 changed files with 974582 additions and 0 deletions

131
scripts/Werksnummer.ps1 Normal file
View File

@@ -0,0 +1,131 @@
<#
.SYNOPSIS
Benennt VDA-Dateien (RA_VDA*) basierend auf der Werksnummer um, die in der
Satzart 512 gefunden wird.
.DESCRIPTION
Dieses Skript ist darauf spezialisiert, VDA-Dateien im EDI-Eingangsverzeichnis
automatisiert zu verarbeiten. Es durchsucht das angegebene Quellverzeichnis
nach Dateien, die mit "RA_VDA" beginnen.
Für jede gefundene Datei wird zeilenweise nach der Satzart '512' gesucht.
Innerhalb dieser Zeile wird an einer festen Position (Zeichen 6-8) die
Abladestelle (Werksnummer) ausgelesen.
- Bei Werksnummer '100' wird die Datei zu 'RA_Leifers...' umbenannt.
- Bei Werksnummer '280' wird die Datei zu 'RA_Pitesti...' umbenannt.
Dateien ohne eine dieser beiden Nummern werden übersprungen. Der Prozess
wird in der Konsole protokolliert.
.PARAMETER Quellverzeichnis
Der Pfad zum Verzeichnis, das die zu verarbeitenden VDA-Dateien enthält.
Standardmäßig ist dieser auf 'C:\EDI\IN' gesetzt.
.PARAMETER Dateimuster
Das Suchmuster für die zu verarbeitenden Dateien. Der Standard ist "RA_VDA*".
.EXAMPLE
.\werksnummer.ps1
Führt das Skript mit dem Standardverzeichnis 'C:\EDI\IN' aus.
.EXAMPLE
.\werksnummer.ps1 -Quellverzeichnis "C:\EDI\TEST"
Führt das Skript für ein abweichendes Testverzeichnis aus.
.NOTES
Version: 2.0 (Verbessert mit präziser Positionslogik)
Autor: Gemini Enterprise
#>
param(
# Das Standardverzeichnis, in dem die Dateien liegen.
[string]$Quellverzeichnis = "C:\EDI\IN",
# Das Muster, nach dem die Dateien gefiltert werden.
[string]$Dateimuster = "RA_VDA*"
)
# Prüfen, ob das Quellverzeichnis existiert
if (-not (Test-Path -Path $Quellverzeichnis -PathType Container)) {
Write-Error "FEHLER: Das angegebene Quellverzeichnis '$Quellverzeichnis' existiert nicht. Bitte überprüfen Sie den Pfad."
return # Bricht das Skript ab
}
# Ruft alle Dateien ab, die dem Muster im Quellverzeichnis entsprechen.
$Dateien = Get-ChildItem -Path $Quellverzeichnis -Filter $Dateimuster -File
if ($Dateien.Count -eq 0) {
Write-Warning "Keine Dateien gefunden, die dem Muster '$Dateimuster' im Verzeichnis '$Quellverzeichnis' entsprechen."
return
}
Write-Host "Starte die Verarbeitung von $($Dateien.Count) Datei(en) im Verzeichnis '$Quellverzeichnis'..."
foreach ($Datei in $Dateien) {
Write-Host "---"
Write-Host "Verarbeite Datei: $($Datei.FullName)"
$WerksnummerGefunden = $null
$NeuerName = $null
# Liest die Datei Zeile für Zeile. Annahme: ANSI-Codierung, wie bei VDA üblich.
try {
$fileStream = New-Object System.IO.StreamReader($Datei.FullName, [System.Text.Encoding]::Default)
while (($zeile = $fileStream.ReadLine()) -ne $null) {
# Prüfe, ob die Zeile mit '512' beginnt und lang genug ist
if ($zeile.StartsWith("512") -and $zeile.Length -ge 8) {
# Extrahiere die Werksnummer von der Position 6-8 (0-basierter Index 5, Länge 3)
$werksnummer = $zeile.Substring(5, 3).Trim()
if ($werksnummer -eq "100") {
$WerksnummerGefunden = "100"
break # Nummer gefunden, Schleife für diese Datei abbrechen
}
elseif ($werksnummer -eq "280") {
$WerksnummerGefunden = "280"
break # Nummer gefunden, Schleife für diese Datei abbrechen
}
}
}
}
finally {
if ($fileStream) {
$fileStream.Close()
}
}
if ($WerksnummerGefunden -eq "100") {
# Werk 100 ist Leifers.
$NeuerName = $Datei.Name.Replace("RA_VDA", "RA_LEIFERS.")
Write-Host " -> Werk '100' (Leifers) gefunden."
}
elseif ($WerksnummerGefunden -eq "280") {
# Werk 280 ist Pitesti.
$NeuerName = $Datei.Name.Replace("RA_VDA", "RA_PITESTI.")
Write-Host " -> Werk '280' (Pitesti) gefunden."
}
else {
Write-Host " -> Keine relevante Werksnummer (100 oder 280) an der definierten Position gefunden. Datei wird übersprungen."
continue # Nächste Datei in der Schleife
}
# Wenn ein neuer Name festgelegt wurde, benennt die Datei um.
if ($NeuerName -and $NeuerName -ne $Datei.Name) {
$NeuerDateipfad = Join-Path -Path $Datei.DirectoryName -ChildPath $NeuerName
try {
Rename-Item -Path $Datei.FullName -NewName $NeuerDateipfad -ErrorAction Stop
Write-Host " => Erfolgreich umbenannt in: $NeuerName"
}
catch {
Write-Error " => FEHLER beim Umbenennen der Datei $($Datei.FullName). Details: $_"
}
}
}
Write-Host "---"
Write-Host "Skript-Durchlauf beendet."