linden
Goto Top

Umbenennen fehlerhafter Dateiordner

Moin,

ich stehe gerade vor einem kleinen Problem... Und zwar sollte, bzw. hat einer unserer Außendienst-Mitarbeiter über VPN und einem Android-Smartphone täglich Bilder von durchgeführten Reparaturen auf Server ablegen. Dabei hat er unbewusst einen Fehler gemacht und den Dateiordnern immer am Ende des Namens einen Punkt hinzugefügt, um das Datum abzukürzen

Beispiel: Auftragsnr_Stadt_23.03.

Nun tritt das Problem unter Windows auf, dass auf die Ordner nicht zugegriffen werden kann mit der Meldung:
Location is not available - Q:\Service\2022\ Auftragsnr_Stadt_23.03 is unavailable. If the location is on this PC, make sure the device or drive is connected or the disc is inserted, and then try again. If the location is on a network, make sure you’re connected to the network or Internet, and then try again. If the location still can’t be found, it might have been moved or deleted."  


Da dies einige 100 Ordner betrifft wollte ich dies nicht händisch machen... und dachte ans Umbenennen mit einem Powershell-Script bzw. der Batch-File.
Aber auch da bekomme ich die Meldungen folgende Meldung:
Cannot rename because item at 'Q:\Service\2022\ Auftragsnr_Stadt_23.03.' does not exist.  

Mein Code zum Umbenennen ist folgender und sollte eigentlich auch funktionieren:
@echo off
chcp 65001 >nul & rem umlaute...
setlocal enableDelayedExpansion


  rem verzeichnisliste holen
for /f "tokens=*" %%a in ('dir /b /a:d ') do (  
    set "folderName=%%~a"  
    set "newFolderName=!folderName:_= !"   
    @REM echo %%a =^>  !newFolderName!
    
    set lastChar=!folderName:~-1!
    IF !lastChar!==. (
        @REM echo %%a =^>  !newFolderName:~0,-1!
        ren "%%a" "!newFolderName:~0,-1!"  
    )
)

Content-ID: 2261522188

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

Ausgedruckt am: 21.11.2024 um 22:11 Uhr

1915348599
Lösung 1915348599 23.03.2022 aktualisiert um 12:42:57 Uhr
Goto Top
Da für Windows ein Punkt am Ende eines Verzeichnisses ein ungültiges Zeichen ist, schnapp dir ne Linux-Live CD oder machs im OS über WSL und benenne die Ordner in einem Aufwasch um, denn für Linux ist ein Punkt am Ende eines Ordners beim Zugriff kein Problem
find /path/to/rootfolder -type d -regex ".+\.$" | while read folder ;do mv "$folder" "${folder%.}";done  
linden
linden 23.03.2022 um 13:27:12 Uhr
Goto Top
Moin Pretty,

ist mir bekannt unter Linux. Hatte eher die Hoffnung das es in Windows doch geht
colinardo
Lösung colinardo 23.03.2022 aktualisiert um 14:00:32 Uhr
Goto Top
Servus,
über \\?\[Pfad] lässt sich das auch unter Windows bewerkstelligen wenn es sein muss.
Damit sich die Shell nicht über die fehlerhaften Ordnernamen beschwert ist dann noch ein kleiner Umweg für das Listen der Ordner nötig, hier per Powershell
[IO.Directory]::GetDirectories('Q:\Service\2022') | ?{$_ -like '*.'} | %{rename-item -Path "\\?\$_" -NewName ([io.path]::GetFileName($_.trimEnd('.'))) -verbose}  
Grüße Uwe