hero98
Goto Top

Powershell - path ungültig - Anfänger

Hallo Community face-smile

es geht um folgendes,
ich versuche gerade in einem Ordner A auf dem Desktop,
wo jeweils eine Text und eine PDF Datei gleich benannt ist per Powershell umzubenennen,
dabei zeigt er mir die ganze Zeit das der Path ungültig sei.

Ich hoffe ihr könnt mir helfen und sagen, was ich bei der ganze Sache hier übersehe.

$txt =  "C:\Users\xx\Desktop\A\*.txt"  
$pdf =  "C:\Users\xx\Desktop\A\*.pdf"  


if ( $txt.name -eq $pdf.name ){

    $objects = $txt.split(",") | ForEach-Object{ $_.trimstart("`"").trimend("`"")}  
 
    For($i = 0; $i -lt $objects.count; $i++){
        if($objects[$i] -match "AB")  
        { 
            $filename = $objects[$i + 1]
        }       
    } 
   
    Rename-Item -Path $pdf -NewName "$filename.pdf"  

}

else{
    Write-Host "Keine Gleichnamigen Files gefunden"   
}


Wenn ich mit dem Script jemanden augenscheinlich verletzte, sorry,
ist mein erster Powershell-Script und mein erster Beitrag.
fehlermeldung

Content-Key: 659876

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

Printed on: April 16, 2024 at 12:04 o'clock

Member: GarfieldBonn
GarfieldBonn Mar 06, 2021 updated at 14:40:00 (UTC)
Goto Top
$txt = (get-childitem -path "C:\Users\zzz\Desktop\A" -File | Where-Object { $_.Name -match '.txt'}).Name

$pdf = (get-childitem -path "C:\Users\zzz\Desktop\A" -File | Where-Object { $_.Name -match '.pdf'}).Name

$found = $false


foreach ($txtdatei in $txt) {

$comparedat = ($txtdatei.split("."))

foreach ($pdfdatei in $pdf) {

if($comparedat -eq ($pdfdatei.split("."))) {

write $pdfdatei

$found =$true

### Rename-Item -Path "C:\Users\zzz\Desktop\A\"$pdf -NewName "$filename.pdf"

}

}

}

if (!$found) {Write-Host "Kein gleichnamigenDateien gefunden!"}
Member: MichaelW84
MichaelW84 Mar 08, 2021 at 20:51:01 (UTC)
Goto Top
Du könntest vor Zeile 16 mal folgendes machen :

echo $pdf
Oder
write-host $pdf

Dann kannst du sehen was wirklich in der Variable steht.
Mitglied: 147669
147669 Mar 10, 2021 updated at 10:11:02 (UTC)
Goto Top
Würds gleich so machen:
$quelle = 'C:\Users\zzz\Desktop\A'  
ls "$quelle\*" -File -Include *.pdf,*.txt | group Basename | ?{$_.Count -gt 1} | %{  
    $newname = [regex]::match($_.Name, 'AB.*?,([^,]+)').Groups[1].Value.trim('"')  
    if ($newname){
        $_.Group | ?{$_.Extension -eq '.pdf'} | rename-item -NewName $newname -verbose  
    }
}
Member: GarfieldBonn
GarfieldBonn Mar 10, 2021 at 10:59:32 (UTC)
Goto Top
broup basename - kannte ich noch nicht. Danke @147669
Mitglied: 147669
147669 Mar 10, 2021 updated at 11:12:11 (UTC)
Goto Top
Zitat von @GarfieldBonn:

broup basename - kannte ich noch nicht. Danke @147669
Bitte gerne:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Tipp: Anstatt einer Property kannst du dort auch einen Scriptblock einsetzen und so nach beliebigen Kriterien Objekte gruppieren.

Und für die Zukunft vielleicht hier auch mal für deine Codeschnippsel beherzigen
Formatting instructions in the posts
Sonst bekommt man ja die Kretze ohne Einrückungen, Zerstörung von Sonderzeichen wie # etc. pp.