Vollständige Ordner- und Dateinamen für Projektarchive unter Windows wiederherstellen
Hintergrund
Wenn Sie das Projektarchiv-Tool zum Extrahieren von Projektarchiven verwenden, können Probleme mit langen Dateipfaden und verschachtelten Unterordnerstrukturen auftreten, die den standardmäßigen Windows-Pfadgrenzwert von 260 Zeichen überschreiten können. Um beschädigte Archivdateien und Extraktionsfehler zu vermeiden, schneidet das Projektarchiv-Tool Ordner- und Dateinamen während der Extraktion automatisch ab.
Damit Sie die vollständigen Ordner- und Dateinamen nach der Extraktion wiederherstellen können, enthält Procore eine CSV-Pfadzuordnungsdatei (path-map.csv) innerhalb des extrahierten Archivordners. In dieser Datei wird jeder abgeschnittene Name zusammen mit dem entsprechenden vollständigen Namen aufgelistet. Sie können die CSV-Datei zusammen mit einem standardmäßigen PowerShell-Skript verwenden, um schnell alle vollständigen Elementnamen wiederherzustellen.
Wichtige Hinweise
-
Zusätzliche Informationen:
-
Führen Sie das PowerShell-Skript nicht auf einer nicht extrahierten
ZIP-DateiArchivdatei. -
Schließen Sie alle geöffneten Dateien oder Dokumente, die sich im extrahierten Archivordner befinden, bevor Sie das PowerShell-Skript ausführen, um Fehler beim Sperren von Dateien zu vermeiden.
-
Das mehrfache Ausführen des PowerShell-Skripts ist sicher, wenn bestimmte Ordner- oder Dateinamen bereits teilweise wiederhergestellt wurden.
-
Voraussetzungen
Öffnen Sie den extrahierten Archivordner
-
Entpacken Sie Ihre heruntergeladenen
ZIP-DateiArchivdatei. -
Öffnen Sie den entpackten Archivordner im Datei-Explorer.
-
Stellen Sie sicher, dass die
path-map.csvDatei im Archivordner vorhanden ist.
Hinweis: Diese CSV-Datei enthält drei Spalten:Type,ShortenedNameundOriginalName.
Öffnen Sie PowerShell im extrahierten Archivordner
Wichtig
Sie müssen PowerShell innerhalb des extrahierten Archivordnerpfads öffnen. Wenn es von einem anderen Standort aus geöffnet wird, findet das PowerShell-Skript Ihre Dateien nichtpath-map.csv.Wählen Sie eine der folgenden Methoden:
Option A: Adressleiste (empfohlen)
-
Öffnen Sie in Ihrem Windows-System den Datei-Explorer.
-
Navigieren Sie im Datei-Explorer in den extrahierten Archivordner, so dass die
path-map.csvDatei sichtbar ist. -
Klicken Sie auf einen leeren Fläche in der Adressleiste am oberen Rand des Fensters (in dem der Dateipfad aufgeführt ist).
-
Geben Sie ein und drücken Sie
powershelldie Eingabetaste.
Das Windows PowerShell-Fenster wird geöffnet und zielt auf den Pfad des extrahierten Archivordners ab.
Option B: Kontextmenü
-
Öffnen Sie in Ihrem Windows-System den Datei-Explorer.
-
Öffnen Sie den extrahierten Ordner im Datei-Explorer.
-
Halten Sie die Umschalttaste gedrückt und klicken Sie dann mit der rechten Maustaste auf einen leeren Fläche im Ordnerfenster.
-
Wählen Sie hier PowerShell-Fenster öffnen aus (unter Windows 11 wählen Sie Im Terminal öffnen).
Überprüfen Sie Ihr Adressbuch
Geben Sie im PowerShell-Fenster die Eingabetaste ein, und drücken Sie dir die Eingabetaste.
-
Wenn
path-map.csvin der Ausgabe aufgeführt ist, befinden Sie sich im richtigen Adressbuch. -
Wenn
path-map.csvdies nicht aufgeführt ist, navigieren Sie zu dem Ordner, indem Sie den folgenden Befehl eingeben (und ersetzen Sie den Pfad durch Ihren tatsächlichen Verzeichnispfad):-
cd "C:\voller\Pfad\zum\Ihren-extrahierten Ordner"
-
Ausführen des PowerShell-Skripts
-
Kopieren Sie den folgenden Skriptblock:
-
# Ausführen aus dem Inneren des extrahierten Ordners (der path-map.csv enthält)
$map = Import-CSV ".\path-map.csv"
# Ordner zuerst umbenennen (tiefste Übereinstimmungen zuerst, damit übergeordnete Umbenennungen untergeordnete Pfade nicht beschädigen)
$map | Where-Objekt { $_. Geben Sie -eq 'Ordner' } | ForEach-Object {
$short = $_. ShortenedName; $orig = $_. Ursprünglicher Name
Get-ChildElement -Adressbuch -Recurse |
Where-Objekt { $_. Name -eq $short } |
sort-object { $_. FullName.Length } -absteigend |
ForEach-Object { Rename-Element -LiteralPath $_. FullName -NewName $orig }
}
# Benennen Sie dann Dateien um
$map | Where-Objekt { $_. Geben Sie -eq 'Datei' } | ForEach-Object {
$short = $_. ShortenedName; $orig = $_. Ursprünglicher Name
Get-ChildElement -File -Recurse |
Where-Objekt { $_. Name -eq $short } |
ForEach-Object { Rename-Element -LiteralPath $_. FullName -NewName $orig }
}
-
-
Fügen Sie den Code in Ihr aktives PowerShell-Fenster ein, und drücken Sie die EINGABETASTE.
-
Sobald die Ausführung abgeschlossen ist, werden alle Ordner und Dateien innerhalb des extrahierten Archivordners mit ihren vollständigen Namen angezeigt.

