Supprimer espace dans nom de dossier + son arborescence [Résolu]

- - Dernière réponse :  Spartiatses - 29 juil. 2019 à 12:04
Bonjour,

Débutant dans l’informatique et surtout dans le DEV ( j'ai choisi une option réseau :p).

Je suis à la recherche d'un script permettant de supprimer les espaces contenus dans le nom d'un dossier, mais aussi qui puisse parcourir toute son arborescence en supprimant la aussi les espaces, sans retourner d’erreur s'il ne trouve pas de dossier sans espace et sans toucher au contenu du dossier.
Pas de problème avec les extensions ici puisque je ne souhaites renommer que des dossiers.

Ma première question est donc : Est-ce possible ?

Si oui, est-ce à la portée d'un débutant ou plutôt d'une personne plus confirmée ?

J'ai pour l'instant modifié un bout de code trouvé sur le net en ça :

for /r "C:\Users\toto\Desktop\documents" %%a do (
set "path=%%~nxa"
set "path=!path: =!"
move /y "%%~a" "%%~dpa!path!"
)

C'étais vendu comme supprimant les espaces des dossiers mais rien ne marche, et honnêtement je n'ai pas vraiment compris la logique.

Le but final est de renommer tous les dossiers d'une utilisatrice contenus dans sa boite mail dont la plupart au cumulé font plus de 200 caractères et pose de sérieux problèmes de synchro ..

J’espère que vous pourrez m'aider,
Au plaisir de vous lire,

Cordialement.



Configuration: Windows / Firefox 68.0
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
26314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786
1
Merci
Essaye avec un truc du genre (qui fonctionne en reccursif )


@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "StartFolder=C:\exemple"

cd /D %SystemRoot%
set "RenameError="



rem Rename all folders containing at least one space character in folder name.
for /F "delims=" %%I in ('dir "%StartFolder%\* *" /AD /B /S 2^>nul') do call :RenameFolder "%%I"

if defined RenameError echo/& pause
rem Restore initial environment and exit this batch file.
endlocal
goto :EOF


:RenameFolder
set "NewFolderName=%~nx1"

set "NewFolderName=%NewFolderName:  =%"
set "NewFolderName=%NewFolderName: =%"

set "FolderPath=%~dp1"
if not exist "%FolderPath%" set "FolderPath=%FolderPath: =_%"
set "FullFolderName=%FolderPath%%~nx1"
if not exist "%FullFolderName%\" set "RenameError=1" & goto :EOF

for %%J in ("%FullFolderName%") do set "FolderAttributes=%%~aJ"
if "%FolderAttributes:~3,1%" == "h" %SystemRoot%\System32\attrib.exe -h "%FullFolderName%"

ren "%FullFolderName%" "%NewFolderName%" 2>nul
echo "%FullFolderName%" : "%NewFolderName%"

if errorlevel 1 goto ErrorFolderRename

if "%FolderAttributes:~3,1%" == "h" %SystemRoot%\System32\attrib.exe +h "%FolderPath%%NewFolderName%"
goto :EOF

:ErrorFolderRename
echo Error renaming folder "%FullFolderName%"
set "RenameError=1"
if "%FolderAttributes:~3,1%" == "h" %SystemRoot%\System32\attrib.exe +h "%FullFolderName%"
goto :EOF

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 60266 internautes nous ont dit merci ce mois-ci

Bonjour Jordane45,

Merci je vais tester cela.
Bonjour Jordane45,

Apres test le script fonctionne, il renomme correctement certains dossiers, mais pas tous.

Exemple pour ce dossier : C:\Users\toto\Desktop\turbomeca.training.julien\Inbox.IMAP\2018.IMAP\Training request.IMAP\Semaines formation.IMAP\T2.IMAP\06- JUIN.IMAP\W25-W26.IMAP\ANNULE - ARRIUS 2 SERIES - MP - BAYONNE.IMAP

j'ai testé en appliquant directement au dossier racine, puis au dossier Semaines formation, mais certains dossier passent quand même au travers.
Quel genre de modifications dois-je effectuer à votre avis ?

Merci beaucoup pour toute votre aide !
Re bonjour,

Apres application a tous les sous-sous dossiers, le script fonctionne parfaitement !

Merci beaucoup pour l'aide et le temps considérable que cela va me faire gagner !

Bonne journée.
Commenter la réponse de jordane45
Messages postés
26314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786
0
Merci
Bonjour,


Le but final est de renommer tous les dossiers d'une utilisatrice contenus dans sa boite mail

Heuuuu..... Sauf erreur... le bout de code que tu nous montres sert à renommer des "dossiers" contenus dans le disque dur de l'utilisateur ( des répertoires qui, vu le code que tu nous montres se trouveraient dans le répertoire "documents" de l'utilisateur "toto" ) .... ça n'intervient en RIEN sur le contenu d'une boite mail !

Donc.. avant tout .. il faudrait nous expliquer CLAIREMENT ce que tu souhaites faire.
Si c'est pour la messagerie.. quelle logiciel la personne utilise-t-elle ?



Commenter la réponse de jordane45
0
Merci
Bonjour,

La personne utilise Outlook sur Mdaemon.

J'ai extrait la totalité de son dossier mail afin de l'importer. (rachat d'une boite ayant son Mdaemon, migration de tous ces utilisateurs notre Mdaemon en vue d’arrêter leur serveur).

Le dossier se comporte comme un dossier contenant de document, sauf qu'a la place il contient des mail.
Ce dossier a été extrait de leur Mdaemon (celui qui nous allons arrêter) et a été placer sur une VM en vue du renommage avant de l'intégrer dans notre Mdaemon.

A la copie de celui-ci sur notre serveur, un message d’erreur est apparu nous indiquant que le dossier XXX était trop long et donc impossible à copier.
Cette utilisatrice possède 2551 dossiers au total donc il n'y en aura pas qu'un seul qui posera problème.

Si vous avez besoin de plus d'informations n'hésitez pas, et merci du retour.
Commenter la réponse de Spartiatses