Rechercher un fichier sur l'entièreté d'un ordinateur

Résolu/Fermé
Retch -  
Pierr10 Messages postés 13883 Statut Modérateur -
Bonjour,

La question a peut être déjà été posée mais la recherche par mots clés me renvoie trop de résultats donc désolé en cas de doublons.

j'aimerais un script qui me permet de rechercher un fichier précis (type "MonFichier.rar") sur l'entièreté du PC et que le supprime une fois trouver.

j'ai essayé diverse solutions avec DIR ou encore Findstr mais je n'arrive à rien, mon manque de connaissance m'empêche d'avancer :(

si quelqu'un à une solution ce serait top.

merci

Configuration: Windows / Chrome 100.0.4896.127
A voir également:

4 réponses

brucine Messages postés 22876 Statut Membre 3 538
 
Bonjour,

On peut chercher en redirigeant DIR ou ce qu'on voudra vers une variable par exemple depuis une boucle FOR, puis en supprimant le fichier correspondant à cette variable mais c'est à mon sens une très mauvaise idée: un tel script va mouliner pendant des lustres tout le disque avant de trouver le fichier cherché.

On a plus vite fait de faire une recherche éventuellement un peu ciblée, par exemple Mon*.rar suivie de suppression manuelle.
0
Pierr10 Messages postés 13883 Statut Modérateur 5 473
 
Bonjour

Un fichier donné peut se retrouver à différents endroits du disque. Il faut donc lister ces endroits puis faire les suppressions.

Pour trouver un fichier donné, on peut utiliser l'invite de commande en mode administrateur.
Dans la zone de recherche, à droite du bouton Démarrer, tapez cmd.
Faites un clic droit sur le résultat de la recherche "Invite de commandes" et choisir Exécuter en tant qu'administrateur.

Placez-vous déjà à la racine de l'unité en tapant cd\

Recherchez ensuite le fichier en tapant : dir [nom du fichier] /s/p
Par exemple : dir truc.xlsx /s/p

Le commutateur /p n'est pas essentiel ; il permet un affichage par page s'il y a beaucoup de résultats.

La recherche peut prendre quelques instants.
Toute la liste des fichiers trouvés s'affiche.

Vous pourrez ensuite détruire ceux qui vous intéressent.

Il est peut-être possible de faire la même chose avec la commande del.
Je n'ai pas essayé (opération à risques).


0
brucine Messages postés 22876 Statut Membre 3 538
 
Bonsoir,

Une manière finalement assez rapide d'arriver au résultat sous réserve qu'un seul fichier sur le disque s'appelle "montest.txt":


@echo off
set "nom=montest.txt"
for /f "delims=" %%a in ('dir /s /b %nom%') do set "trouve=%%a"
del %trouve%

:EOF
0
Retch > brucine Messages postés 22876 Statut Membre
 
Bonjour et déjà merci de la solution,

cela fonctionne si le fichier .bat se trouve dans le même dossier que celui à supprimer mais si je le copie dans un autre dossier alors il ne trouve plus le fichier à supprimer.
0
Pierr10 Messages postés 13883 Statut Modérateur 5 473
 
Bonjour,

Je confirme que la commande
del [nomdufichier] /s
fait bien le travail demandé : recherche du fichier puis destruction.

On ne peut pas faire plus simple.

La commande est donc à exécuter dans l'invite de commandes en se plaçant à la racine de l'unité.


Attention : la destruction est totale (les fichiers supprimés ne vont pas dans la corbeille).
0
brucine Messages postés 22876 Statut Membre 3 538
 
Bonjour,

En effet (et l'on n'a pas besoin que la console de commandes soit lancée en mode administrateur), mais j'avais compris que la chose devait être effectuée via un batch, auquel cas on doit en effet partir de la racine: CD C:\, ce que j'avais moi aussi oublié, d'où le souci relaté en <4>.

Et j'avais aussi compris que l'on devait y "avoir la main", c'est-à-dire pouvoir lister les fichiers ou en faire ce que l'on veut avant de les supprimer, d'où les complications que j'ai cherchées.

S'il y a plusieurs fichiers de ce nom, la syntaxe FOR ne traite que le dernier sauf à transiter par une sous-routine CALL; si pour mon malheur un de ces fichiers est dans un dossier visé par un lien symbolique (par exemple ProgramData qui sera aussi appelé par C:\Users\All Users), je tombe sur un bec parce que la dernière localisation est un doublon inaccessible, d'où la condition IF pour empêcher un message d'erreur.


@echo off
set "nom=montest.txt"
CD C:\
for /f "delims=" %%a in ('dir /s /b "C:\%nom%"') do set "trouve=%%a" & CALL :DEL
GOTO :EOF

:DEL
IF EXIST %trouve% DEL %trouve%

:EOF
0
Retch > brucine Messages postés 22876 Statut Membre
 
Effectivement c'était à mettre dans un batch :)

j'ai pas spécifié désolé

Cette dernière solution fonctionne a merveille même si évidemment cela prend un peu de temps sur un PC bien remplis ^^

merci beaucoup à tous les deux
0
brucine Messages postés 22876 Statut Membre 3 538 > Retch
 
La solution de Pier 10 peut aussi être mise dans un batch en 2 lignes et sera beaucoup plus rapide.

Mais il faudra aussi y rajouter une ligne set ou set /p si on veut appliquer la recette à d'autres fichiers, et elle efface sans crier gare au lieu de te permettre d'éventuellement lister ou traiter les fichiers avant; je n'y ai pas testé l'éventualité d'un message d'erreur si un nom de chemin est associé à un lien symbolique.
0
quentin2121 Messages postés 9082 Date d'inscription   Statut Membre Dernière intervention   1 257 > brucine Messages postés 22876 Statut Membre
 
bonjour,
Cela donne quoi la solution de Pier 10 dans un batch ?
0
brucine Messages postés 22876 Statut Membre 3 538 > quentin2121 Messages postés 9082 Date d'inscription   Statut Membre Dernière intervention  
 
ça:


@echo off
CD C:\
DEL montest.txt /s

:EOF


en rajoutant là aussi si on veut une ligne set pour définir un nom de fichier variable au lieu de son nom explicite
0
Pierr10 Messages postés 13883 Statut Modérateur 5 473
 
Bonjour,

Je ne vois pas vraiment l'utilité d'écrire un script.

Si on veut une confirmation avant de détruire le fichier, il suffit de rajouter le commutateur /p dans la ligne de commande.

Par exemple :
del truc.jpg /s/p

Ça va rallonger le temps d'exécution, puisque, à chaque fichier trouvé, il sera demandé de confirmer la suppression.
0
Retch
 
L'utilité ici est de l'intégrer dans un autre script d'installation après extraction d'un fichier .rar. Mon problème était que la personne recevant le fichier peut le copier n'importe où dans son pc plutôt que de suivre un chemin spécifique :)

Parfois les réponses les plus simples sont celles auxquelles on ne pense pas

Encore merci
0
Pierr10 Messages postés 13883 Statut Modérateur 5 473 > Retch
 
Merci pour ces précisions !
0