OVH Cloud OVH Cloud

suppression repertoire

3 réponses
Avatar
Cypher
bonjour a tous,

je souhaite supprimer le contenu d'un repertoire a intervalle regulier sous
windows 2000 Pro
j'ai utlisé la commande "rmdir" mais cette commande supprime le repertoire
specifie ainsi que le rep lui-meme et ca je ne veux pas
de plus, j'ai utlise la commande "del" mais la aussi elle ne supprime que
les fichiers d'un repertoire et non des repertoires
qqn a t-il une idee ?? peut etre scripter en WSH ??

Merci d'avance pour vos reponses

3 réponses

Avatar
Jean-Claude BELLAMY
Cypher s'est ainsi exprimé:
je souhaite supprimer le contenu d'un repertoire a intervalle
regulier sous windows 2000 Pro
j'ai utlisé la commande "rmdir" mais cette commande supprime le
repertoire specifie ainsi que le rep lui-meme et ca je ne veux pas
de plus, j'ai utlise la commande "del" mais la aussi elle ne supprime
que les fichiers d'un repertoire et non des repertoires
qqn a t-il une idee ?? peut etre scripter en WSH ??


Oui, on peut utiliser VBS pour cela, mais beaucoup plus simplement :
Fichier "superdel.bat"
----------- couper ici -----------
@echo off
if %1.==. goto syntaxe
if exist "%1" goto suite
echo Repertoire %1 inexistant
goto fin
REM Suppression des fichiers du répertoire
del /Q /F "%1*.*"
REM Suppression de tous les sous-répertoires
for /D %%R in ("%1*.*") do RD /S /Q "%%R"
goto fin
:syntaxe
echo Syntaxe :
echo superdel repertoire
echo NB: le nom de repertoire :
echo - doit se terminer par ""
echo - doit etre encadre par des guillemets s'il comporte
echo des espaces
:fin
----------- couper ici -----------

ATTENTION!!!
- vu que les confirmations ont été supprimées partout,
- vu que la suppression de fichiers en lecture seule
a été autorisée,
ce script peut faire des "ravages" !!!
P.ex. SURTOUT NE PAS EXECUTER superdel %systemroot% !!!!!! ;+)


Commentaires :
1) Pour énumérer les sous-répertoires dans une boucle
"for", il suffit d'ajouter le commutateur "/D"
2) Ne pas oublier les guillemets avec les noms comportant des espaces!

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*

Avatar
Cypher
Merci beaucoup

Cypher

"Jean-Claude BELLAMY" a écrit dans le
message de news:%
Cypher s'est ainsi exprimé:
je souhaite supprimer le contenu d'un repertoire a intervalle
regulier sous windows 2000 Pro
j'ai utlisé la commande "rmdir" mais cette commande supprime le
repertoire specifie ainsi que le rep lui-meme et ca je ne veux pas
de plus, j'ai utlise la commande "del" mais la aussi elle ne supprime
que les fichiers d'un repertoire et non des repertoires
qqn a t-il une idee ?? peut etre scripter en WSH ??


Oui, on peut utiliser VBS pour cela, mais beaucoup plus simplement :
Fichier "superdel.bat"
----------- couper ici -----------
@echo off
if %1.==. goto syntaxe
if exist "%1" goto suite
echo Repertoire %1 inexistant
goto fin
REM Suppression des fichiers du répertoire
del /Q /F "%1*.*"
REM Suppression de tous les sous-répertoires
for /D %%R in ("%1*.*") do RD /S /Q "%%R"
goto fin
:syntaxe
echo Syntaxe :
echo superdel repertoire
echo NB: le nom de repertoire :
echo - doit se terminer par ""
echo - doit etre encadre par des guillemets s'il comporte
echo des espaces
:fin
----------- couper ici -----------

ATTENTION!!!
- vu que les confirmations ont été supprimées partout,
- vu que la suppression de fichiers en lecture seule
a été autorisée,
ce script peut faire des "ravages" !!!
P.ex. SURTOUT NE PAS EXECUTER superdel %systemroot% !!!!!! ;+)


Commentaires :
1) Pour énumérer les sous-répertoires dans une boucle
"for", il suffit d'ajouter le commutateur "/D"
2) Ne pas oublier les guillemets avec les noms comportant des espaces!

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*





Avatar
Th.A.C
il est possible de rajouter un test pour savoir si on est pas a la racine ou
dans le %systemroot% en utilisant les variables comme:
%~p1 : Développe %1 en un chemin (jusqu'au dernier seulement,
attention!!!)
%~f1 : Développe %1 en un chemin complet
%~df1 : Développe %1 en une lettre de lecteur et un chemin complet
qui reformattent proprement les valeurs passées en argument et permettent de
faire un test fiable en comparant %systemroot% et %~df1.

Par contre il faut penser à rajouter le à la fin dans le test:
if %systemroot% == %~dp1 ...

Attention:
c:winnt comme argument, %~df1 donne C:WINNT
c:winnt comme argument, %~df1 donne C:WINNT

Pour avoir toutes les options, faites une recherche sur % dans l'aide


Pour tester s'il y a un a la fin d'une variable, on peut utiliser les
options d'extraction:

%variable:~positiondepart,longueur%

positiondepart: commence à 0 et non pas 1. En mettant des valeurs négatives
on part de x caractères depuis la fin.

longueur: longueur de la chaine a extraire. Si on ne la met pas, prend toute
la chaine. Si on met une valeur négative, prend toute la chaine sauf les x
derniers caractères.

exemples:
C:>echo %systemroot:~0,5%
C:WI
C:>echo %systemroot:~1%
:WINNT
C:>echo %systemroot:~1,5%
:WIN
C:>echo %systemroot:~0,-1%
C:WINN
C:>echo %systemroot:~-2,-1%
N
C:>echo %systemroot:~-4,-1%
INN

A priori on ne peux pas extraire directement sur %1 avec formattage, il faut
passer par une variable intermédiaire:
set chemin=%~dp1
echo %chemin:~-1,1%
if "%chemin:~-1,1%"=="" echo a la fin

C'est un peu confu comme explication et je n'ai pas trouvé la rubrique dans
l'aide de windows.
Un grand merci a celui qui a déja donné les explications sur la partie
extraction dans ce newsgroup.