Jump to content

gleiche Ordner umbenennen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo, 

 

fangen wir mal von vorne an ;-) 

 

Beachte:

  1. Verwende keine Aliase, sondern den kompletten Befehl
  2. Wenn ein Befehl Fehler abwirft, schaue in der Dokumentation des Befehls, ob eine Eingabe fehl am Platz ist
  3. Wenn du Dir nicht sicher bist, dann schaue dir die Befehlsbeispiele in der Dokumentation an und vergleiche

Fehler:

  • Der "-recurse" Parameter ist lt. Dokumentation ein Switch, also BOOL (Ja/Nein) Parameter. "Neuer Ordner" ist kein JA/NEIN
  • ForEach-Object fehlt es an den Klammern, 
  • ForEach-Object ist in der Iteration anonym, deshalb muss eine Laufzeitvariable $_ dafür genommen werden, die das aktuelle Objekt enthält

Dokumentationen
Get-ChildItem (Microsoft.PowerShell.Management) - PowerShell | Microsoft Docs

ForEach-Object (Microsoft.PowerShell.Core) - PowerShell | Microsoft Docs

Link zu diesem Kommentar

Hallo Jan,

 

danke für die Aufklärung.

Ich dachte -recurse ist notwendig, damit rekursiv durchsucht wird.

Ich habe es nun so probiert,

$folderpath = 'E:\temp'
$items = Get-ChildItem -recurse $folderpath "Neuer Ordner"
foreach( $i in $items) { 
    Rename-Item $i.FullName "Blubb"
}

 

aber dann ist das Problem wenn der Namen mehrmals vorkommt:

...\Neuer Ordner\...\Neuer Ordner

 

Link zu diesem Kommentar
vor 5 Minuten schrieb al3x:

aber dann ist das Problem wenn der Namen mehrmals vorkommt:

Das ist Prinzipiell richtig. Das wird auch forciert, weil du ja bis in die unterste Ordnerebene mit "-recurse" die Ordner und Dateien untersuchst. Lässt du diesen weg, dann bezieht sich das nur auf die Ordner/Dateien in $folderPath.

 

Get-Childitem bietet Dir auch die Möglichkeit die Suche auf "Nur Ordner" oder "Nur Dateien" einzuschränken. Oder auch einen "-filter" einzusetzen.

Link zu diesem Kommentar

In dem ForEach musst du das Objekt $i abfragen, ob es den Ordnernamen "Neuer Ordner" hat und erst dann den Ordner umbenennen. Das geht am einfachsten mit einer IF-Abfrage. Aktuell werden so alle Ordner und Dateien umbenannt.

 

 $folderpath "Neuer Ordner"

Dafür fehlen noch die Angaben der Parameter von Get-ChildItem.

bearbeitet von MurdocX
Link zu diesem Kommentar
vor 55 Minuten schrieb al3x:

Ich dachte -recurse ist notwendig, damit rekursiv durchsucht wird.

 

Es hilft meiner Meinung nach sehr dem Verständnis und der Lesbarkeit, wenn man die Parameternamen nicht weglässt. Nutzt man die "Tab-Vervollständigung" ist es auch nicht soo viel mehr zu tippen.

 

Deine Code-Zeile

$items = Get-ChildItem -recurse $folderpath "Neuer Ordner"

... würde dann zu ... 

$items = Get-ChildItem -Path $folderpath -Name "Neuer Ordner" -Recurse

 

... und ich packe Switch-Parameter immer gern ans Ende des Kommandos.

bearbeitet von BOfH_666
Link zu diesem Kommentar
vor 7 Minuten schrieb al3x:

kann man sich die Syntax vielleicht besser verinnerlichen....

Die Hilfe ist PowerShell eingebaut. Mit "Get-Help <cmdlet>" bekommst Du die Syntax angezeigt. Ausserdem kannst Du, wenn Du den Namen eines cmdlet getippt hast und nicht weißt, wie's weitergeht einfach ein "-" tippen und dann mit Tab durch die Parameter "blättern" oder in der ISE wird Dir, wenn Du den "-" eingibst, schon die Liste der Parameter aufgeklappt.

 

Edit:

Noch besser wäre, wenn Du VSCode für die Entwicklung von PowerShell-Code benutzt. Dort bekommst Du die meiste Hilfe.

bearbeitet von BOfH_666
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...