Divers : swifer et 8 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

commandes ms-dos

 
n°62773
mic
Posté le 28-12-2007 à 16:35:24  profilanswer
 

Bonjour,
j'aimerais supprimer des sous-dossiers. J'utilise la commande cacls pour me donner les droits puis j'utilise la commande RMDIR /S /Q %REP%
Le problème c'est que ca me supprime le dossier indiqué et pas uniquement les sous-dossiers. Exemple: RMDIR /S /Q C:\test me supprime le dossier test mais je voudrais qu'il supprime uniquement les sous-dossiers du dossier C:\test.
 
Quand j'utilise la commande cacls, il me pose une question et je voudrais m'en débarasser. Si quelqu'un connait un paramètre que j'ai pas vu.  :)  
merci

n°62774
Ashe
reenignE esreveR
Posté le 28-12-2007 à 16:37:08  profilanswer
 

deltree :sol:
Edit: et C:\test\*


Message édité par Ashe le 28-12-2007 à 16:37:39

---------------
Globe trotter/SDF - Namur, Belgique
Joy, beautiful spark of the gods, Daughter of Elysium, We enter fire imbibed, Heavenly, thy sanctuary.
Trombi Matbe
n°62777
mic
Posté le 28-12-2007 à 16:40:32  profilanswer
 

apparemment deltree n'existe plus sous windows xp. Mais j'ai pas testé mon rmdir avec l'étoile. J'avais juste mis un \
 
Edit: * marche pas avec rmdir.  :(


Message édité par mic le 28-12-2007 à 16:42:50
n°62782
LostSoul
Manieur de hache
Posté le 28-12-2007 à 18:17:02  profilanswer
 

del %REP%\*.* /s


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°62807
mic
Posté le 31-12-2007 à 10:22:05  profilanswer
 

ca supprime les fichiers  [:dreamworker:4]  
je cherche à supprimer les sous-dossiers sans supprimer le dossier parent  :)

n°62808
LostSoul
Manieur de hache
Posté le 31-12-2007 à 10:39:31  profilanswer
 

fais le avec un vbscript ca ira 10 fois plus vite


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°62809
mic
Posté le 31-12-2007 à 10:58:05  profilanswer
 

:lol:  
par contre j'y connais rien en vbs. Microsoft ca craint quand même. Sous Linux ca serait déjà réglé.  :pfff:

n°62810
LostSoul
Manieur de hache
Posté le 31-12-2007 à 11:03:54  profilanswer
 

j'avais essayé un truc ganre ca :
 
for %%d in (*.*) do if exist %%d\*.* rd %%d\*.* /s /q
 
mais bon ca marche po
 
le for est sensé lire tous les fichiers du directory, le if exist est une astuce pour voir si c'est un directory.


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°62811
Naunaud128
Crawling Up A Hill
Posté le 31-12-2007 à 11:28:33  profilanswer
 

Au pire tu crées un listing de l'arborescence et tu fais supprimer successivement tout le listing par ton batch.


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
 
n°62812
mic
Posté le 31-12-2007 à 11:30:36  profilanswer
 

j'ai trouvé une astuce mais je sui à nouveau bloqué.
je fais dir /B %REP% > test.txt pour récuperer la liste des sous-répertoires que je redirige dans un fichier texte.
Il faut maintenant que je fasse une boucle for pour supprimer les sous-répertoires et ca marche pas.
 
Edit: c l'astuce de nono mais l'a postée pdt que je faisais autre chose.  :)  
 
Edit2: le problème c'est le paramètre de la boucle for.


Message édité par mic le 31-12-2007 à 11:32:24
n°62813
mic
Posté le 31-12-2007 à 11:45:58  profilanswer
 

nono tu sais comment faire pour supprimer le listing?

n°62814
Naunaud128
Crawling Up A Hill
Posté le 31-12-2007 à 12:15:01  profilanswer
 

cd C:\test\
pushd %1
del /q *.*
for /f "Tokens=*" %%G in ('dir /B') do rd /s /q "%%G"
popd

 


(la solution n'est pas de moi) (et pas besoin de listing avec ça)

Message cité 1 fois
Message édité par Naunaud128 le 31-12-2007 à 12:15:12

---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
 
n°62815
LostSoul
Manieur de hache
Posté le 31-12-2007 à 12:17:22  profilanswer
 

ca marche le coup de mettre ('dir /b') ? pask'alors effectivement c'est facile


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°62816
Naunaud128
Crawling Up A Hill
Posté le 31-12-2007 à 12:18:12  profilanswer
 

Citation :

/B    Utilise le format abrégé (noms des fichiers).


Bah, tout ce qui est dans le help est utilisable :p


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
 
n°62818
LostSoul
Manieur de hache
Posté le 31-12-2007 à 12:20:22  profilanswer
 

nan spas le /b le prob c'est d'utiliser 'dir /b' comme paramètre du for ...


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°62820
Naunaud128
Crawling Up A Hill
Posté le 31-12-2007 à 12:24:22  profilanswer
 

LostSoul a écrit :

nan spas le /b le prob c'est d'utiliser 'dir /b' comme paramètre du for ...


 
Ah, ça, wé c'est une astuce que je connaissais pas :D


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
 
n°62821
mic
Posté le 31-12-2007 à 14:24:53  profilanswer
 

Naunaud128 a écrit :

cd C:\test\
pushd %1
del /q *.*
for /f "Tokens=*" %%G in ('dir /B') do rd /s /q "%%G"
popd
 
 
(la solution n'est pas de moi) (et pas besoin de listing avec ça)


 
je comprend pas tout à fait comment ca marche. Quand je fais le pushd %1 il me répond le chemin d'accès spécifié est introuvable.
 Par contre si je fais cd D:\test ca marche pas

n°62822
mic
Posté le 31-12-2007 à 14:29:31  profilanswer
 

là g un truc comme ca.

 
Citation :

@ECHO OFF

 

set REP=D:\test

 

for /F %%i in ('dir /B %REP%') do @ECHO RMDIR /Q /S %%i >>test2.bat

 


le problème c'est que les dossiers avec un espace il aime pas. Il faudrait que je lui colle un caractère en fin de ligne pour filtrer dessus genre un ; et faire: for /F "delims=;" %%i in ('dir /B %REP%') do @ECHO RMDIR /Q /S %%i >>test2.bat

Message cité 1 fois
Message édité par mic le 31-12-2007 à 14:30:05
n°62824
calirto
C'est trop inzuste !!!!
Posté le 31-12-2007 à 14:44:30  profilanswer
 

Et si tu supprime tout et refait le dossier parent ca va pas :ddr:


---------------
Privé de signature par un méchant modo :o
 
Depuis l'aube de l'espèce humaine, quand nos ancêtres découvrirent le pouvoir de mort de la pierre et de l'os, le sang a été mêlé au nom de chaque chose, de Dieu à la justice jusqu’à la simple et démente rage.
n°62825
mic
Posté le 31-12-2007 à 14:45:36  profilanswer
 

:lol:  nan ca craint. C'est un dossier partagé. Le but de supprimer le contenu sans péter le partage.  :D

n°62827
Naunaud128
Crawling Up A Hill
Posté le 31-12-2007 à 14:57:33  profilanswer
 

mic a écrit :

je comprend pas tout à fait comment ca marche. Quand je fais le pushd %1 il me répond le chemin d'accès spécifié est introuvable.
 Par contre si je fais cd D:\test ca marche pas


 
Me dis pas que tu tapes les commandes l'une à la suite de l'autre...


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
 
n°62828
LostSoul
Manieur de hache
Posté le 31-12-2007 à 14:58:56  profilanswer
 

mic a écrit :

là g un truc comme ca.
 

Citation :

@ECHO OFF
 
set REP=D:\test
 
for /F %%i in ('dir /B %REP%') do @ECHO RMDIR /Q /S %%i >>test2.bat


 
 
le problème c'est que les dossiers avec un espace il aime pas. Il faudrait que je lui colle un caractère en fin de ligne pour filtrer dessus genre un ; et faire: for /F "delims=;" %%i in ('dir /B %REP%') do @ECHO RMDIR /Q /S %%i >>test2.bat


 
for /F %%i in ('dir /B %REP%') do @ECHO RMDIR /Q /S "%%i" >>test2.bat
 
non ?
 


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°62829
mic
Posté le 31-12-2007 à 15:10:16  profilanswer
 

résultat: RMDIR /Q /S "Nouveau"
au lieu de: RMDIR /Q /S Nouveau dossier
ca m'a pas l'air bon  :D  
dans le for y a des options comme delims pour donner un caractère qui délimite le bloc ou le mot ou tokens mais le problème c'est que j'arrive pas à les utiliser.

n°62830
mic
Posté le 31-12-2007 à 15:12:01  profilanswer
 

Naunaud128 a écrit :

Me dis pas que tu tapes les commandes l'une à la suite de l'autre...


euh g essayé pour voir  :whistle:  G fait le script et ca m'a dégagé tous les fichiers à la racine du C: alors que j'avais remplacé le C: par D:.

n°62831
Naunaud128
Crawling Up A Hill
Posté le 31-12-2007 à 15:15:33  profilanswer
 

mic a écrit :

euh g essayé pour voir  :whistle:  G fait le script et ca m'a dégagé tous les fichiers à la racine du C: alors que j'avais remplacé le C: par D:.


 
Menteur :o
je l'ai testé et ça fonctionne exactement comme tu le veux.


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
 
n°62832
LostSoul
Manieur de hache
Posté le 31-12-2007 à 15:16:14  profilanswer
 

essaye en rajoutant /X dans le dir (pour lister les noms courts)


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°62833
mic
Posté le 31-12-2007 à 15:19:50  profilanswer
 

Naunaud128 a écrit :

Menteur :o
je l'ai testé et ça fonctionne exactement comme tu le veux.


 
cd D:\test\
pushd %1
del /q *.*
for /f "Tokens=*" %%G in ('dir /B') do rd /s /q "%%G"
popd
 
voici le script que j'ai fait. Il s'est auto-détruit au bout de 5 sec.  :D  J'ai juste remplacé le C:\test\ par D:\test\

n°62834
Naunaud128
Crawling Up A Hill
Posté le 31-12-2007 à 15:26:58  profilanswer
 

cd M:\test\prout\
pushd %1
del /q *.*
for /f "Tokens=*" %%G in ('dir /B') do rd /s /q "%%G"
popd  
 
Il m'a bien supprimé les deux sous répertoires et le fichier qui se trouvaient dans prout, sans effacer prout...


---------------
C'est moi Nono, le petit robot, l'ami d'Ulysse.
 
n°62836
mic
Posté le 31-12-2007 à 15:38:13  profilanswer
 

:sweat:  je viens de comprendre. Depuis le début, mon script se trouve sur le C: et ca ne me posait aucun problème. Quand je teste ta solution, ca marche pas si tu le mets pas sur la même partition.  :D


Aller à :
Ajouter une réponse