[DOS] Supprimer tout sauf une extension

Résolu/Fermé
Toto - 20 janv. 2011 à 11:47
Pierrot6150 Messages postés 1614 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 8 janvier 2017 - 26 janv. 2011 à 19:06
Bonjour,

je souhaite écrire un fichier BATCH qui supprimerait tous les fichiers sauf ceux qui ont une extension particulière.

Comment faire ?

Merci !
A voir également:

15 réponses

Bonjour .

Non , mais il y' a plus simple , il faut simplement saisir cette commande sous

le dossier concerné :

del *xxx /s /q

(Bien sûr "*.xxx" représente la véritable extension) .
1
Je comprends pas ?

/s pour supprimer le fichier spécifié des dossiers et sous-dossiers.
/P pour la confirmation

En gros tu veux que je dise oui ou non à la main sur 10000 fichiers ?
0
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
20 janv. 2011 à 15:53
hello
avec un .bat.
ici on ne garde que les .exe. A tester bien sûr.
@echo off
set EXT=.exe
for /f "delims=" %%f in ('dir /b') do  if not %%~xf == %EXT% del %%f
0
Je viens d'utiliser la portion de code suivante
if not %%~xf == %EXT%


Ca ne semble pas fonctionner.

J'ai aussi essayé
set EXT=*.bat
...
if not %%a == %EXT% (..)

Mais le symbole '*' ne semble pas être bien interprété...
0
Je vais tenter demain. Merci pour le message.
Il faudrait que ce soit récursif dans chaque sous dossier. Et je suis dessus aussi, sauf que je n'arrive pas à détecter les sous-dossiers d'un dossier en Batch.

set VrSource=C:\/"Documents and Settings/"\tts\/"Mes documents/"\Toto\TestEcnryption
for %%b In ('dir /AD %VrSource%') Do (
		echo %%b
)

Ce bout de code ne m'affiche pas les sous dossiers que l'on trouve dans TestEcnryption. Je ne sais pas trop pourquoi..

Je ne maîtrise pas le Batch et je fais au hasard pour tout ce qui est guillemet etc autour des variables, des commandes etc...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
21 janv. 2011 à 08:04
utiliser dir /b/s pour aller dans les sous dossiers
0
Non ça ne marche pas non plus. C'est peut être la bonne utilisation, mais je l'utilise probablement mal... Toujours est-il que le 'echo %%b' m'affiche le chemin %VrSource% et c'est tout. Pas de sous dossier etc... Je suis vraiment bloqué :s
0
Il faut aussi garder en tête que je ne connais pas les noms des sous répertoire.
0
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
21 janv. 2011 à 11:56
essayer
set VrSource="C:\Documents and Settings\tts\Mes documents\Toto\TestEcnryption"
for /f "delims="  %%b In ('dir /b/s  %VrSource%') Do (
		echo %%b
)
0
J'ai le message suivant :

Option non valide - ""Documents and Settings/"\tts\".


Je vais regarder ça de plus prêt.
0
Pierrot6150 Messages postés 1614 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 8 janvier 2017 557
21 janv. 2011 à 12:41
"C:\Documents and Settings\tts\Mes documents\Toto\TestEcnryption"

Pour vérifier que le chemin est bien correct...
Exécuter cmd.exe
Ensuite exécute une commande à la fois, et des qu'il y a une erreur...
faire un dir *.* pour afficher le contenue fichier/dossier

cd "C:\Documents and Settings"
cd tts
cd "Mes documents"
cd Toto
cd TestEcnryption
0
J'ai vérifié, mais de toute manière, ce chemin est utilisé à d'autres endroits et ça fonctionne.
0
Pierrot6150 Messages postés 1614 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 8 janvier 2017 557
21 janv. 2011 à 14:13
Si ce chemin est correct, alors pourquoi une erreur...

Option non valide - ""Documents and Settings/"\tts\". ???
0
Si je fais juste
for %%b In ('dir /b/s  %VrSource%') Do (
	echo %%b
)


j'ai l'impression qu'il n'exécute pas la commande 'dir' car echo %%b affiche :

'dir
/b/s
C:\/"Documents and Settings/"\tts\/"Mes documents/"\Nicolas\TestEcnryption'
0
Pierrot6150 Messages postés 1614 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 8 janvier 2017 557
21 janv. 2011 à 14:54
@echo off
setlocal EnableDelayedExpansion

cls

set VrSource="C:\Documents and Settings\tts\Mes documents\Toto\TestEcnryption"

for /R %VrSource% %%b In (*.* ) Do echo %%b

echo.
pause
0
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
21 janv. 2011 à 14:37
lis mes réponses
0
Au temps pour moi, mon erreur venait des guillemets autour du chemin d'accès.. En effet, ça marche. Ca me sort tous les fichiers et sous-dossiers. Je pensais que je n'aurais que les dossier en fait.
Alors en rajoutant l'option /AD, je ne récupère que les sous-dossiers.

for /f "delims="  %%b In ('dir /b/s/ad %VrSource%') Do (
		echo %%b
)


Par contre, je ne comprends pas bien le rôle/fonctionnement de delims écrit comme ça ?
0
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
21 janv. 2011 à 16:08
pour tenir comptes des noms de fichiers contenant un ou des espaces
0
Bonjour,
Sauve les extentions particuliaires et puis delete tous tes fichiers, puis recopie les fichiers sauvegardés !
Avec un .bat avec Xcopy et \exclude
0
Je ne voulais pas faire ça parce qu'il peut y avoir plusieurs Mo voire Go de données. Alors faire des copier/coller, c'est peut être pas la bonne solution ?
0
Edawards Messages postés 17096 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 21 juillet 2020 1 974
21 janv. 2011 à 16:19
Bonjour,
Voir ici peut-etre :

http://www.hotline-pc.org/batch.htm
0
Merci ! J'y ai trouvé des informations précieuses. J'aurais aimé avoir ça quand j'ai commencé ce script :)
0
Edawards Messages postés 17096 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 21 juillet 2020 1 974
Modifié par Edawards le 21/01/2011 à 17:31
De rien. Mettre en résolu pour aider les autres aussi.
Merci.
0
Edawards Messages postés 17096 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 21 juillet 2020 1 974
22 janv. 2011 à 00:56
Merci à vous d'avoir mis le solution.
0
Je souhaite effectuer des commandes sur des noms de fichier n'ayant pas un extension particulière. Dubcek proposait:

@echo off
set EXT=.exe
for /f "delims=" %%f in ('dir /b') do  if not %%~xf == %EXT% del %%f


Je viens d'utiliser la portion de code suivante

if not %%~xf == %EXT%


Ca ne semble pas fonctionner.

J'ai aussi essayé

set EXT=*.bat
...
if not %%a == %EXT% (..)


Mais le symbole '*' ne semble pas être bien interprété...

Une idée ?
merci !
0
Edawards Messages postés 17096 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 21 juillet 2020 1 974
24 janv. 2011 à 20:50
Bonjour,
Allez sur le forum Bureautique sur cette page en haut dans l'onglet : liste des forums.
0
Pourquoi faire ?
0
Edawards Messages postés 17096 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 21 juillet 2020 1 974
26 janv. 2011 à 16:43
Bonjour,
Pour XP par exemple puisque vous ne donnez pas votre version windows :
Ouvrir un nouveau fichier vierge dans le bloc-notes de la meme manière. Copiez-y le texte : le texte est : windows.
Vérifier ensuite que ce fichier ne possède bien aucune extension (pour cela les extensions doivent etre affichées -cf §1-).
Il faut faire apparaitre l'extension et pour pouvoir l'effacer, c'est simple, une fois le fichier créée, il suffit de cliquer deux fois lentement sur le titre et vous pouvez le modifier, en effacant le .xxx, l'extension est alors supprimée (ou en faisant un clic droit, puis la renommer).
Info : si votre version de xp, (si xp), est une "media center", la procédure ne fonctionne pas en présence de cette version, que trés rarement.
0
Merci, mais ce n'est pas exactement ce que je veux faire...
Il s'agit d'un process automatisé via un script Batch qui aurait pour but d'effectuer des commandes sur tous les fichiers sauf ceux ayant une extension particulière. Dans mon cas l'extension c'est .bat.
Donc j'essayais d'utiliser la solution de Dubcek pour travailler sur les bons fichiers, mais ça ne fonctionne pas...
0
Edawards Messages postés 17096 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 21 juillet 2020 1 974
26 janv. 2011 à 18:10
cpau -k -cwd "repertoire d'execution" -u user -p password -ex test2.batCode test2.bat :
copy "bla.txt" "rep admin"
Essayez avec cela et voir.
0
Pierrot6150 Messages postés 1614 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 8 janvier 2017 557
26 janv. 2011 à 19:06
set EXT=*.bat doit être set EXT=.bat

Tu ne prend que l'extension pour comparer, normal que tout ce qui est avant le point n'existe pas.

.BAT .EXE .HTML etc...

Pour connaitre les paramètres exact d'une fonction, dans l'invite de commande...
FOR /?

Cela est valable pour toute les fonctions possible en batch.
0