CMD Script Teile eines Verzeichnis umbenennen
Guten morgen,
ich versuche ein CMD Script zu erstellen welches mir Verzeichnisse umbenennt:
Verzeichnisse können so aussehen:
AAA.BBB.CCC.DDD.EEE.FFF-GGG.HHH
AAA.BBB.CCC-DDD
AAA.BBB.CCC.DDD.EEE.FFF.GGG.HHH-III-JJJ
jedenfalls sind die Texte mit einem "." bzw "-" getrennt. ( und AAA / BBB etc. sind Platzhalter )
Wenn z.b. .DDD gefunden wird, benenne das Verzeichnis um, ohne DDD.
AAA.BBB.CCC.EEE.FFF-GGG.HHH
AAA.BBB.CCC-DDD
AAA.BBB.CCC.EEE.FFF.GGG.HHH-III-JJJ
Das ich die Verzeichnisse mit dir /B /AD in eine Datei umlenken kann, habe ich schon hin bekommen,
wie gehe ich jetzt vor das ich jeden Platzhalter in eine Variable bekomme und ggf. die Platzhalter vergleiche mit dem Wert den es löschen soll
Hoffe das war verständlich ausgedrückt.
Gruß
ich versuche ein CMD Script zu erstellen welches mir Verzeichnisse umbenennt:
Verzeichnisse können so aussehen:
AAA.BBB.CCC.DDD.EEE.FFF-GGG.HHH
AAA.BBB.CCC-DDD
AAA.BBB.CCC.DDD.EEE.FFF.GGG.HHH-III-JJJ
jedenfalls sind die Texte mit einem "." bzw "-" getrennt. ( und AAA / BBB etc. sind Platzhalter )
Wenn z.b. .DDD gefunden wird, benenne das Verzeichnis um, ohne DDD.
AAA.BBB.CCC.EEE.FFF-GGG.HHH
AAA.BBB.CCC-DDD
AAA.BBB.CCC.EEE.FFF.GGG.HHH-III-JJJ
Das ich die Verzeichnisse mit dir /B /AD in eine Datei umlenken kann, habe ich schon hin bekommen,
wie gehe ich jetzt vor das ich jeden Platzhalter in eine Variable bekomme und ggf. die Platzhalter vergleiche mit dem Wert den es löschen soll
Hoffe das war verständlich ausgedrückt.
Gruß
4 Antworten
- LÖSUNG TK1987 schreibt am 07.04.2021 um 08:32:54 Uhr
- LÖSUNG twistuba schreibt am 07.04.2021 um 13:06:36 Uhr
- LÖSUNG TK1987 schreibt am 07.04.2021 um 13:33:07 Uhr
- LÖSUNG warranty schreibt am 07.04.2021 um 14:45:00 Uhr
- LÖSUNG TK1987 schreibt am 07.04.2021 um 13:33:07 Uhr
LÖSUNG 07.04.2021, aktualisiert um 11:56 Uhr
Moin,
CMD ist eine tote Sprache. Wenn du diese bis heute noch nicht beherrschst, solltest du auch erst gar nicht mehr versuchen, sie dir anzueignen.
Heute nimmt man für sowas Powershell.
Sorry Uwe, ich klau mal kurz:
Gruß Thomas
CMD ist eine tote Sprache. Wenn du diese bis heute noch nicht beherrschst, solltest du auch erst gar nicht mehr versuchen, sie dir anzueignen.
Heute nimmt man für sowas Powershell.
$Quelle = 'C:\Test'
$Dirs = Get-ChildItem -Directory -Path $Quelle
Foreach ($Dir in $Dirs) {
Rename-Item -Path $Dir.Fullname -NewName ($Dir.Name -Replace '\.DDD')
}
Sorry Uwe, ich klau mal kurz:
Zitat von @colinardo:
Powershell Leitfaden für Anfänger
Pflichtlektüre
- Kapitel 1: Erste Schritte mit PowerShell
- Kapitel 2: Das Hilfesystem
- Kapitel 3: Entdecken von Objekten, Eigenschaften und Methoden
- Kapitel 4: Einzeiler und die Pipeline
- Kapitel 5: Formatierung, Aliase, Anbieter, Vergleich
- Kapitel 6: Flusssteuerung
- Kapitel 7: Arbeiten mit WMI
- Kapitel 8: PowerShell-Remoting
- Kapitel 9: Funktionen
- Kapitel 10: Skriptmodule
- Anhang A: Hilfesyntax
Erweiterte Grundlagen
- Alles, was Sie schon immer über Arrays wissen wollten
- Alles, was Sie schon immer über Hashtabellen wissen wollten
- Was Sie schon immer über PSCustomObject wissen wollten
- Alles, was Sie schon immer über die Variablenersetzung in Zeichenfolgen wissen wollten
- Alles, was Sie schon immer über die IF-Anweisung wissen wollten
- Alles, was Sie schon immer über die switch-Anweisung wissen wollten
- Alles, was Sie schon immer über Ausnahmen wissen wollten
- Alles, was Sie schon immer über $null wissen wollten
- Alles, was Sie schon immer über ShouldProcess wissen wollten
- Verwenden von Erweiterung mit der TAB-TASTE
Zusätzliche Ressourcen
- PowerShell-Lernressourcen
- Module/CMDLet Reference
- API-Referenz für PowerShell SDK
- https://docs.microsoft.com/en-us/powershell/
- http://www.msxfaq.de/code/powershell/powershell.htm
- http://www.administrator.de/wissen/powershell-for-runaways-part-i-76114 ...
- http://www.administrator.de/wissen/powershell-for-runaways-part-ii-8661 ...
Gruß Thomas
LÖSUNG 07.04.2021 um 13:06 Uhr
Danke, so schnell habe ich gar nicht mit einer Antwort gerechnet ..
Funktioniert auch, prima.
aber nichts desto trotz, auch wenn CMD tot ist, für das 1x im Jahr wenn ich ein Batch brauche, reicht mir CMD vollkommen aus.
Anders wäre es wenn ich täglich programmieren müsste.
nur noch kurz eine Frage zu deinem Script - was mache ich wenn ich einen teil umbenennen möchte anstatt löschenn?
Gruß
Funktioniert auch, prima.
aber nichts desto trotz, auch wenn CMD tot ist, für das 1x im Jahr wenn ich ein Batch brauche, reicht mir CMD vollkommen aus.
Anders wäre es wenn ich täglich programmieren müsste.
nur noch kurz eine Frage zu deinem Script - was mache ich wenn ich einen teil umbenennen möchte anstatt löschenn?
Gruß
LÖSUNG 07.04.2021 um 13:33 Uhr
Zitat von @twistuba:
aber nichts desto trotz, auch wenn CMD tot ist, für das 1x im Jahr wenn ich ein Batch brauche, reicht mir CMD vollkommen aus.
Ganz ehrlich, falscher Ansatz. Auch wenn CMD auf den ersten Blick simpler erscheinen mag - dieser Blick trügt gewaltig. CMD ist nicht nur in den Funktionen sehr eingeschränkt, es auch um einiges schwieriger zu erlernen.aber nichts desto trotz, auch wenn CMD tot ist, für das 1x im Jahr wenn ich ein Batch brauche, reicht mir CMD vollkommen aus.
Powershell ist, wenn man erst einmal den Anfang gemacht hat, so ziemlich die am leichtesten zu erlenende Sprache überhaupt - aber vorsicht, macht süchtig! 😁
nur noch kurz eine Frage zu deinem Script - was mache ich wenn ich einen teil umbenennen möchte anstatt löschenn?
technisch gesehen tut es das bereits, es ist halt nur nichts angegeben, worin er das umbenennen soll - daher benennt er das einfach in nichts um.Die zu ersetzende Zeichenkette muss also lediglich ergänzt werden, z.B. wird durch folgendes .DDD in .YYY umbenannt:
$Quelle = 'C:\Test'
$Dirs = Get-ChildItem -Directory -Path $Quelle
Foreach ($Dir in $Dirs) {
Rename-Item -Path $Dir.Fullname -NewName ($Dir.Name -Replace '\.DDD','.YYY')
}
LÖSUNG 07.04.2021, aktualisiert um 14:45 Uhr
Kleine Verbesserung damit es nicht Fehlermeldungen hagelt bei Ordnern die den Begriff nicht enthalten, denn einen Ordner in den selben Namen umzubenennen wird ja nicht klappen ...
Gruß w.
$Quelle = 'C:\Test'
Get-ChildItem -Directory -Path $Quelle | ?{$_.Name -match '\.DDD'} | rename-item -NewName {$_.Name -replace '\.DDD','.YYY'}