PowerShell PowerShell Meldung interpretieren

Lucky#

Ensign
Registriert
März 2007
Beiträge
175
Hallo liebe Community!

Ich habe ein Script erstellt mit dem ich in einem Verzeichnis, einen Teil vom Ordner- und Dateinamen ersetzen kann.

Explizit soll das Datum überall ersetzt werden, sprich im Ordnername inkl. Unterverzeichnisse und deren Inhalt.

Das Script sieht folgender maßen aus:
Get-ChildItem -recurse | Rename-Item -NewName {$_.Name -replace '210418','210419'}

Das Script funktioniert auch wunderbar, so lange das Datum nicht nach vorne geändert wird.

Sprich:
- Änderung von 210419 auf 210418 ohne Probleme.

- Änderung von 210418 auf 210419 Datum wird geändert allerdings mit der Meldung:
+CategoryInfo WriteError: (C: \Users\... : String)_[Rename-Item], IOException

+FullyQualifiedErrorId :RenameItemIOE rror, Microsoft.PowerShel1.Commands. RenameItemCommand

Kann mir jemand erklären, wieso die Meldung nur erscheint, wenn das Datum nach vorne geändert wird?

Vielen Dank
 
Gibt es zufälligerweise schon Dateien, die den selben Namen haben?

E: ah nee, dann würde PS
Code:
Rename-Item : Cannot create a file when that file already exists.
sagen...

Bei mir geht's mit ein paar Dummydateien in beide "Richtungen" ohne Probleme.

E: zeigt doch bitte mal ein komplette Ausgabe des Fehlers. Mir kommt's so vor, dass du was vergessen hast.
 
Zuletzt bearbeitet:
Sind die Daten welche umbenannt werden sollen, aktuell im Zugriff?

Kannst das Script ja mal in einem neuen Ordner mit Dummyfiles testen.
 
Hallo Jungs,

Danke für eure Anteilnahme 😊✌️.

Ich dachte ich habe das Problem gelöst, aber dem ist leider nicht so!

Mit Dummy Dateien funktioniert es!
 
IMG_20210419_132520.jpg
 
und genau da kommt mein Kommentar wieder zum Vorschein:
kartoffelpü schrieb:
Gibt es zufälligerweise schon Dateien, die den selben Namen haben?
bzw nicht den selben Namen, sondern den Namen, die die Dateien bekommen sollen...
 
  • Gefällt mir
Reaktionen: tony_mont4n4
Zeig doch mal die verfügbaren Dateinamen, dann kann man dazu auch mehr sagen.
Da du "-recurse" nutzt: Hast du die gleichen Dateien in mehreren Unterverzeichnissen?

Außerdem kannst du beim Rename-Item mal -Verbose anhängen.

Und noch einer: Es geht nur um Dateien, oder? Dann bitte "get-childitem -recurse -file" nutzen. Die Fehlermeldungen kommen scheinbar von den Verzeichnissen (da das ja auch child-items sind)
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: tony_mont4n4
Okay ich hab die Ursache gefunden!

Schuld ist ein einziger Ordner!
Entnehme ich diesen, funktioniert alles ohne Meldung.
Dieser enthält aber keine anderen Daten wie die anderen.
Enthalten sind in den Ordnern PDF Dateien die aber eine unterschiedliche Bezeichnung haben.

???
 
kartoffelpü schrieb:
Und noch einer: Es geht nur um Dateien, oder? Dann bitte "get-childitem -recurse -file" nutzen. Die Fehlermeldungen kommen scheinbar von den Verzeichnissen (da das ja auch child-items sind)
Das hast du gesehen?
 
Sorry, das habe ich übersehen.

Aber wie in meinem ersten Post erwähnt, sollen Ordner und Dateien umbenannt werden.
 
Dann musst du wahrscheinlich 2 Durchläufe machen, beim ersten nur die Verzeichnisse umbenennen, beim 2. nur die Dateien.

Um es zu konkretisieren:
PowerShell:
Get-ChildItem -recurse -Directory| Rename-Item -NewName {$_.Name -replace '210418','210419'}
Get-ChildItem -recurse -File| Rename-Item -NewName {$_.Name -replace '210418','210419'}
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: areiland
Habe ich mir auch schon überlegt.

Aber ich vermute das Problem nun entgültig gefunden zu haben:

Nachdem Datum, dass geändert werden soll, kommt noch eine nicht definierte Zahlenkombination. Diese Zahlen verursachen vermutlich den Konflikt!
Benenne ich entsprechende Dateien und Ornder um, funktioniert es reibungslos.

Vielen Dank für eure Hilfe ✌️
 
  • Gefällt mir
Reaktionen: tony_mont4n4
Zurück
Oben