knallex
Goto Top

File Rename für Sharepoint

Hallo,

ich habe ein großeres Verzeichnis (geschätzt 60 GB) mit unterschiedlichsten Daten.
Beim Hochladen in den Sharepoint bekomme ich immer Abbrüche.

Ich brauche ein Tool, welches Pfade/Ordner/Dateien bearbeiten kann. (Automatisch)
Sonderzeichen sollen entfernt werden, Dateinamen korrigiert werden....

Sharepoint lässt bestimmte Zeichen nicht zu....
Sharepoint - Zeichen die nicht verwendet werden dürfen

Habt ihr Ideen für mich?
(Bin leider kein Script Kind)

Content-Key: 358640

Url: https://administrator.de/contentid/358640

Printed on: April 25, 2024 at 18:04 o'clock

Member: Voiper
Voiper Dec 19, 2017 at 12:47:55 (UTC)
Goto Top
Hi,

da wirst du um ein batch oder powershell-script nicht rumkommen.

Gruß, V
Member: colinardo
colinardo Dec 19, 2017 updated at 16:17:27 (UTC)
Goto Top
Servus,
mal als Schnellschuss ohne Log & Co mit den Angaben aus dem Link in ein Powershell-Skript umgesetzt (Illegale Zeichen/Namen werden ersetzt)
$rootfolder = 'D:\Daten'  
$regex = '(\.files|_files|\-Dateien|_fichiers|_bestanden|_file|_archivos|\-Filer|_tiedostot|_pliki|_soubory|_elemei|_ficheiros|_arquivos|_dosyalar|_datoteke|_fitxers|_failid|_fails|_bylos|_fajlovi|_fitxategiak)$|^_vti_|\.{2,}|\.$|^\.|^_|[\\/:?<>|"*~#%&{}+]'  
gci $rootfolder -Force -Recurse -PipelineVariable obj | ?{$_.Name -match $regex} | sort {$_.Fullname.length} -Desc | %{
     $newname = $_.Name -replace $regex,''  
     while($newname -match $regex){$newname = $newname -replace $regex,''}  
     $cnt = 1
     if ($newname -match '^\s*$'){  
        $getnewname = { @{$true="folder";$false="file"}[$obj.PSIsContainer] + "_$cnt" }  
        $newname = . $getnewname
        while(Test-Path "$([IO.Path]::GetDirectoryName($_.Fullname))\$newname"){$cnt++;$newname = .$getnewname}  
     }else{
        $getnewname = { $newname + "_$cnt" }  
        while(Test-Path "$([IO.Path]::GetDirectoryName($_.Fullname))\$newname"){$cnt;$newname = .$getnewname}  
     }
     $_ | rename-item -NewName $newname -verbose -whatif
}
Skript ist durch die Verwendung des -whatif Parameters noch nicht scharf geschaltet und kann somit unbeschadet auf eine Verzeichnissturktur angewendet werden es zeigt dann nur welche Dateien /Ordner umbenannt werden auf der Konsole an, erst wenn der Parameter entfernt wird macht das Skript ernst.

Grüße Uwe

-edit- Update.
Member: Knallex
Knallex Dec 19, 2017 at 16:06:49 (UTC)
Goto Top
Vielen Dank.
Überlege ich nachher gleich zu testen.