Wie muss ich diesen Powershell Befehl ändern?

2 Antworten

Rename-Item hat sich zickig, wenn es darum geht Ordner in den gleichen Namen umzubenennen.🤯

...und LowerCase ist es immer noch der gleiche Name!

Es sind 2 Schritte nötig.

  1. Ordner in einen anderen Namen umbenennen
  2. Ordner in einen kleinen Namen umbenennen
Get-ChildItem 'D:\demo'  -Recurse | %{
  $LowerName = $_.Name.ToLower()
   #ist es ein Ordner?
  if ($_.PSIsContainer){
      #bastle einen Namen, welcher nach menschlichen ermessen recht unwarscheinlich wäre
    $tempName='!!!{0}!!!.{1}' -f (Get-Date).Ticks,$_.Name
     #Ordner zu temporären Namen Umbenennen und diesen per passthru der nächsten Instanz übergeben, welche in den  LowerCaseNamen umbenennt
    $_|Rename-Item  -NewName $tempName -passthru -verbose| Rename-Item -NewName $LowerName -verbose
  }
  else {
     #für Dateien brauchen wir  diesen Zirkus  nicht
    $_|Rename-Item -NewName $LowerName 
  }
}

...die -verbose können weg, habe ich nur gesetzt, damit Du siehst was läuft!

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Hallo,

Rename-folder ist der richtige Befehl um Ordner umzubennen

Meine Idee wäre einfach rename-item und rename-folder nacheinander auszuführen, dann wird immer das richtige element umbenannt.

LG

Harry

gameStreek813 
Fragesteller
 09.02.2022, 12:24

Hallo, danke für Ihre Antwort.

Ich habe das Script jetzt auf: powershell "Get-ChildItem "H:\test" -recurse | Rename-Folder -NewName {$_.FullName.ToLower()}" umbennant. Doch leider passierte mit dem Befehl nichts. Habe ich etwas falsch gemacht, im script?

0
heizfeld  09.02.2022, 13:42
@gameStreek813

Ja, jeder erzählt was anderes. mit remove-item soll man ordner löschen können, aber die müssen leer sein.

0
Erzesel  09.02.2022, 16:11

rename-folder ? ...ist kein Standard-Cmdlet 😏

0