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:
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:
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!!
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!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 625618
Url: https://administrator.de/contentid/625618
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
2 Kommentare
Neuester Kommentar