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-ID: 659876

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

Ausgedruckt am: 25.11.2024 um 11:11 Uhr

GarfieldBonn
GarfieldBonn 06.03.2021 aktualisiert um 15:40:00 Uhr
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!"}
MichaelW84
MichaelW84 08.03.2021 um 21:51:01 Uhr
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.
147669
147669 10.03.2021 aktualisiert um 11:11:02 Uhr
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  
    }
}
GarfieldBonn
GarfieldBonn 10.03.2021 um 11:59:32 Uhr
Goto Top
broup basename - kannte ich noch nicht. Danke @147669
147669
147669 10.03.2021 aktualisiert um 12:12:11 Uhr
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
Formatierungen in den Beiträgen
Sonst bekommt man ja die Kretze ohne Einrückungen, Zerstörung von Sonderzeichen wie # etc. pp.