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-Key: 625618

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

Printed on: April 24, 2024 at 08:04 o'clock

Member: emeriks
emeriks Nov 26, 2020 at 08:15:02 (UTC)
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.
Member: robdox
robdox Nov 26, 2020 at 08:22:02 (UTC)
Goto Top
Oh mann... na klar! Danke, die "_" sind fix - manchmal sieht man den Wald vor Bäumen nicht. Merci!