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

Résolu/Fermé
Retch - Modifié le 28 avril 2022 à 21:02
Pierr10 Messages postés 11521 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 25 avril 2024 - 29 avril 2022 à 16:17
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 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024 1 812
28 avril 2022 à 22:04
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 11521 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 25 avril 2024 4 871
Modifié le 28 avril 2022 à 22:34
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 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024 1 812
28 avril 2022 à 22:51
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 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024
29 avril 2022 à 08:57
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 11521 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 25 avril 2024 4 871
29 avril 2022 à 10:02
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 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024 1 812
29 avril 2022 à 11:46
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 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024
29 avril 2022 à 15:02
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 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024 1 812 > Retch
29 avril 2022 à 15:16
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 8511 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 24 avril 2024 1 270 > brucine Messages postés 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024
29 avril 2022 à 15:27
bonjour,
Cela donne quoi la solution de Pier 10 dans un batch ?
0
brucine Messages postés 14314 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 25 avril 2024 1 812 > quentin2121 Messages postés 8511 Date d'inscription lundi 24 mai 2010 Statut Membre Dernière intervention 24 avril 2024
29 avril 2022 à 15:30
ç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 11521 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 25 avril 2024 4 871
29 avril 2022 à 15:56
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
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 11521 Date d'inscription mardi 13 février 2018 Statut Modérateur Dernière intervention 25 avril 2024 4 871 > Retch
29 avril 2022 à 16:17
Merci pour ces précisions !
0