Wie muss ich diesen Powershell Befehl ändern?
Hey, ich habe ein script gebaut, welches Dateien die Großgeschrieben sind, kleinschreiben lässt.
powershell "Get-ChildItem "H:\test" -recurse | Rename-Item -NewName {$_.FullName.ToLower()}"
Dies funktioniert auch. Mein Problem:
Der Befehl ändert nur Namen von Dateien, aber keine Ordner.
Wichtig ist, dass er auch Ordner ändert.
Falls jemand eine andere Idee hat, wie Ich Dateien und Ordner eines Pfades in kleingeschrieben änder, ohne Powershell, lasst es mich bitte wissen
Vielen Dank,
MfG euer hilfesuchender Azubi der Systemintegration
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.
- Ordner in einen anderen Namen umbenennen
- 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!
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
Ja, jeder erzählt was anderes. mit remove-item soll man ordner löschen können, aber die müssen leer sein.
Hier sind alle commandos recht übersichtlich mit Beispielen und thematisch gegliedert aufgelistet
Powershell - Files and Folder Operations (tutorialspoint.com)
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?