[DOS] Supprimer tout sauf une extension

Résolu
Toto -  
Pierrot6150 Messages postés 3186 Statut Membre -
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

Utilisateur anonyme
 
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
Toto
 
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 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
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
Toto
 
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
Toto
 
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 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
utiliser dir /b/s pour aller dans les sous dossiers
0
Toto
 
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
Toto
 
Il faut aussi garder en tête que je ne connais pas les noms des sous répertoire.
0
dubcek Messages postés 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
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
Toto
 
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 3186 Statut Membre 560
 
"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
Toto
 
J'ai vérifié, mais de toute manière, ce chemin est utilisé à d'autres endroits et ça fonctionne.
0
Pierrot6150 Messages postés 3186 Statut Membre 560
 
Si ce chemin est correct, alors pourquoi une erreur...

Option non valide - ""Documents and Settings/"\tts\". ???
0
Toto
 
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 3186 Statut Membre 560
 
@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 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
lis mes réponses
0
Toto
 
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 19033 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
pour tenir comptes des noms de fichiers contenant un ou des espaces
0
junico
 
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
Toto
 
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 18177 Date d'inscription   Statut Membre Dernière intervention   1 936
 
Bonjour,
Voir ici peut-etre :

http://www.hotline-pc.org/batch.htm
0
Toto
 
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 18177 Date d'inscription   Statut Membre Dernière intervention   1 936
 
De rien. Mettre en résolu pour aider les autres aussi.
Merci.
0
Edawards Messages postés 18177 Date d'inscription   Statut Membre Dernière intervention   1 936
 
Merci à vous d'avoir mis le solution.
0
Toto
 
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 18177 Date d'inscription   Statut Membre Dernière intervention   1 936
 
Bonjour,
Allez sur le forum Bureautique sur cette page en haut dans l'onglet : liste des forums.
0
Toto
 
Pourquoi faire ?
0
Edawards Messages postés 18177 Date d'inscription   Statut Membre Dernière intervention   1 936
 
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
Toto
 
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 18177 Date d'inscription   Statut Membre Dernière intervention   1 936
 
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 3186 Statut Membre 560
 
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