Powershell - path ungültig - Anfänger
Hallo Community 
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.
Wenn ich mit dem Script jemanden augenscheinlich verletzte, sorry,
ist mein erster Powershell-Script und mein erster Beitrag.
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.
5 Antworten
- LÖSUNG GarfieldBonn schreibt am 06.03.2021 um 15:37:53 Uhr
- LÖSUNG MichaelW84 schreibt am 08.03.2021 um 21:51:01 Uhr
- LÖSUNG 147669 schreibt am 10.03.2021 um 11:09:47 Uhr
- LÖSUNG GarfieldBonn schreibt am 10.03.2021 um 11:59:32 Uhr
- LÖSUNG 147669 schreibt am 10.03.2021 um 12:06:10 Uhr
- LÖSUNG GarfieldBonn schreibt am 10.03.2021 um 11:59:32 Uhr
LÖSUNG 06.03.2021, aktualisiert um 15:40 Uhr
$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(".")[0])
foreach ($pdfdatei in $pdf) {
if($comparedat -eq ($pdfdatei.split(".")[0])) {
write $pdfdatei
$found =$true
### Rename-Item -Path "C:\Users\zzz\Desktop\A\"$pdf -NewName "$filename.pdf"
}
}
}
if (!$found) {Write-Host "Kein gleichnamigenDateien gefunden!"}
$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(".")[0])
foreach ($pdfdatei in $pdf) {
if($comparedat -eq ($pdfdatei.split(".")[0])) {
write $pdfdatei
$found =$true
### Rename-Item -Path "C:\Users\zzz\Desktop\A\"$pdf -NewName "$filename.pdf"
}
}
}
if (!$found) {Write-Host "Kein gleichnamigenDateien gefunden!"}
LÖSUNG 08.03.2021 um 21:51 Uhr
LÖSUNG 10.03.2021, aktualisiert um 11:11 Uhr
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
}
}
LÖSUNG 10.03.2021, aktualisiert um 12:12 Uhr
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
https://administrator.de/faq/20#toc-27
Sonst bekommt man ja die Kretze ohne Einrückungen, Zerstörung von Sonderzeichen wie # etc. pp.
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
https://administrator.de/faq/20#toc-27
Sonst bekommt man ja die Kretze ohne Einrückungen, Zerstörung von Sonderzeichen wie # etc. pp.