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.
Please also mark the comments that contributed to the solution of the article
Content-Key: 659876
Url: https://administrator.de/contentid/659876
Printed on: April 23, 2024 at 13:04 o'clock
5 Comments
Latest comment
$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!"}
$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!"}
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
}
}
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.
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.