Bonjour... J'ai pondu un script qui "devrait" résoudre notre problème... Je voulais vous le soumettre pour validation.
En gros... Il va dans le répertoire contenant le "root" de chaque composant, liste les sous-répertoire de chacun de ces composant et essaye de les effacer... Il ne supprime que les répertoires vides...
Je vais de toute façon d'abord tester la suppression d'un répertoire unique et voir ce qui se passe. Si tout va bien (et après votre validation) je passe le scripte sur notre silverdata.
Voici le script (Batch sous Windows):
@echo off
REM ********************************
REM Affectation des variables
REM ********************************
set chemin=D:\silverdata\silverpeas\data\workspaces
set tempdir=C:\tmp
echo Debut de l effacement des repertoires vides>tempdir\logkill.txt
date /T>>tempdir\logkill.txt
time /T>>tempdir\logkill.txt
cls
echo Recherche des fichiers vide en cours.
echo Recherche des fichiers vide en cours.>>tempdir\logkill.txt
echo Soyez patient... Ca peut prendre long
ping 127.0.0.1 >nul
REM ********************************
REM Recherche des repertoires PARENTS de chaque composant
REM ********************************
del /Q tempdir\workdir.txt
for /f "tokens=* delims= " %a in ('dir "%chemin" /b/ad') do (
echo chemin\%%a>>tempdir\workdir.txt
)
REM ********************************
REM Listing des repertoires contenus dans les repertoires parents
REM Ils sont listes dans l'ordre -- le plus profond de l'arborescence --
REM vers -- Le moins profond de l'arborescence --
REM ********************************
del /Q tempdir\listkill.txt
for /f "usebackq delims=" %b in (%tempdir\workdir.txt) do (
dir %b /ad/b/s | sort /R>>%tempdir\listkill.txt
)
REM ********************************
REM Tentative d effacement de tous les repertoires listes a l'etape precedente
REM Si le repertoire n est pas vide il ne sera pas effacer
REM ATTENTION!!! Retirez le rem de la dernière ligne de la boucle FOR pour que cela fonctionne
REM ********************************
cls
echo Effacement des repertoires en cours
echo Effacement des repertoires en cours>>tempdir\logkill.txt
for /f "usebackq delims=" %c in (%tempdir\listkill.txt) do (
echo Effacement du repertoire %c
echo Effacement du repertoire %%c>>%tempdir\logkill.txt
rem rd %a>>%tempdir\logkill.txt
)
del /Q tempdir\workdir.txt
del /Q tempdir\listkill.txt
REM ********************************
REM Blabla de fin de script
REM ********************************
cls
echo Effacement fini
echo Effacement fini>>tempdir\logkill.txt
date /T>>tempdir\logkill.txt
time /T>>tempdir\logkill.txt
echo Veuillez vous reporter au fichier log se trouvant sous tempdir\logkill.txt
echo.
pause