robdox
Goto Top

Powershell, STRING Formatierung schlägt fehl

Hallo zusammen,

ich verstehe die Abarbeitung von PS nicht. Ich lese mir aus einem Ordner alle PDF Dateien ab - in dem Dateinamen stecken zwei Informationen die ich gern gesondert extrahiert hätte, als Variable, da ich diese in einer SQL Abfrage einbinde und das Ergebnis wiederum benutze, die Dateien umzubenennen. Leider liefert mir PS immer eine Fehlermeldung:

You cannot call a method on a null-valued expression.
At .....ps1:49 char:17
+ ...             [array]$Nr_Ref1=$RE[$z].Name.Name.Substring(0,$RE[$z].Nam ...

Wenn ich mir die Subtringwerte in Write-Host anzeigen lasse, stimmt es. Sobald ich es versuche über eine Variable zu benutzen, klappt es nicht. Der Codeschnipsel ist wie folgt:

[array]$RE=Get-ChildItem -Path $N -Include "*.pdf"  
           
           for($z=0;$z -lt $RE.Length; $z++){
                [array]$Nr_Ref1=$RE[$z].Name.Substring(0,$RE[$z].Name.indexof('_'))  
                [array]$Nr_Alfa=$RE[$z].Name.Substring(14,11).replace('_L','').replace('pd','').replace('S','').replace('_','').replace('.','') # hier habe ich schon irgendwie getrickst, das SubString mit INDEXOF nicht klappt.  
                
                $CMD="Select (Nr_Ref1+'_'+cast(ID_AG as varchar)+'_'+alf5+'_LS.pdf') as 'NEW' from Send where isnull(Nr_Ref1,'')<>''   
                      and isnull(alf5,'')<>'' and Nr_Ref1   
                      like'$Nr_Ref1%' and alfanumAnw5='$Nr_Alfa'"  

                [array]$Rename=(querySQL -cSQL $CMD).NEW
               
                for($i=0;$i -lt $Rename.Length; $i++){
                   #Rename-Item -Path $RE[$z].Name -NewName $Rename[$i] - erst wenn Ergebnis stimmt.
                   write-host $RE[$z].Name " neuer Name " $Rename[$i] #Testausgabe  
               }  
           }

Was hatte ich vor? Die Datei heißt wie folgt:

XXXAJ201112SEZ_6640-AB_LS.pdf - dabei soll XXXAJ201112SEZ in $Nr_Ref1 und 6640-AB in $Nr_Alfa - dabei könnte die Stringlänge variieren. Die Versuche mit INDEXOF von "_" zu "_LS" klappt genauso wenig.

WO ist hier mein Fehler? Benötige dringend Hilfe, da ein Kunde darauf warte.

Danke vorab!!

Content-ID: 625618

Url: https://administrator.de/contentid/625618

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

emeriks
emeriks 26.11.2020 um 09:15:02 Uhr
Goto Top
Hi,
sind die "_" immer dabei? Wenn ja, dann einfach danach splitten.
$x = "XXXAJ201112SEZ_6640-AB_LS.pdf"  
$Nr_Ref1 = $x.Split("_")  
$Nr_Alfa = $x.Split("_")[1]  

E.
robdox
robdox 26.11.2020 um 09:22:02 Uhr
Goto Top
Oh mann... na klar! Danke, die "_" sind fix - manchmal sieht man den Wald vor Bäumen nicht. Merci!