Comment supprimer des fichiers d'un dossier en utilisant une liste de noms de fichiers dans Windows?

23

j'ai un dossier contenant 2K + fichiers, j'ai besoin de supprimer environ 200, j'ai un fichier txt avec tous les noms de fichiers dont j'ai besoin supprimé ordonné dans une liste, comment puis-je supprimer les fichiers spécifiques du dossier en utilisant la liste? (OS est Windows 7)

Avishking
la source

Réponses:

18

Le moyen le plus simple est de copier le fichier txt dans un fichier appelé mydel.batdans le répertoire des fichiers à supprimer. À l'aide d'un éditeur comme Microsoft Word, modifiez ce fichier. Effectuez un remplacement global sur Newline normalement ^pdans Word. Remplacez-le par space/f^pdelspace. Cela va changer

File1.bin
File20.bin
File21.bin

à (avec /fpour "forcer la suppression des fichiers en lecture seule"):

File1.bin /f
del File20.bin /f
del File21.bin /f
del

Modifiez la première ligne pour ajouter l' delespace et supprimez la dernière ligne.

Exécutez la commande batch.

kingchris
la source
Mis à part le commutateur / Y, qui ne fonctionne apparemment pas dans la commande win7 del, cela a très bien fonctionné .. merci
Avishking
2
C'est probablement censé être /fpour "forcer la suppression des fichiers en lecture seule" au lieu de /y.
afrazier
Afrazier correct. Je mélangeais le / Y qui fonctionne avec XCOPY et un ou deux autres programmes DOS pour «supprimer l'invite à confirmer l'action»
kingchris
Dans les éditeurs qui savent comment trouver / remplacer avec regex, comme Notepad ++, vous devez remplacer "^" par "del" et "$" par "/ f", où ^ représente le début de chaque ligne et $ - la fin.
Dan Mirescu
38

Tapez ceci sur la ligne de commande, en remplaçant votre fichier par files_to_delete.txt:

for /f %i in (files_to_delete.txt) do del %i

Une version de celle-ci adaptée à inclure dans les .cmdfichiers (double %%) et capable de gérer les espaces dans les noms de fichiers:

for /f "delims=" %%f in (files_to_delete.txt) do del "%%f"
William Jackson
la source
1
Cela a en fait supprimé la liste des fichiers au lieu des fichiers eux-mêmes ... j'ai dû recréer la liste: |
Avishking
4
Mes plus sincères excuses. J'ai oublié le /fdrapeau.
William Jackson
C'est assez astucieux, je ne connaissais pas les boucles prises en charge en ligne de commande comme ça. Voulez-vous écrire un article de blog pour le blog SU à ce sujet et d'autres subtilités de la ligne de commande?
Ivo Flipse
1
@Ivo: vous voudrez peut-être jeter un œil à computerhope.com/batch.htm ou superuser.com/questions/tagged/batch pour en savoir plus. Comme Unix, une grande partie de ce qui peut être fait dans les scripts (fichiers batch) peut également être fait directement à partir de la ligne de commande.
BlueRaja - Danny Pflughoeft
J'ai créé un fichier bat et copié le 2ème exemple: résultat: le files_to_delete.txt est toujours supprimé. (même avec le drapeau / f)
bvdb
18

Utilisation de PowerShell:

Get-Content c:\path\to\list.txt | Remove-Item
Siim K
la source
1
Wow, c'est beaucoup plus lisible que batch.
TheLQ
Pour les futurs lecteurs ... J'ai dû changer l'opérateur de tuyau en un >pour que cela fonctionne. C'est à dire Get-Content c:\path\to\list.txt > Remove-Item... j'avais des chemins UNC complets dans mon list.txt. J'espère que cela t'aides.
NateJ
@NateJ J'ai essayé d'utiliser le >et il vient de créer un fichier pour moi, au lieu de supprimer des choses.
Brian J
@BrianJ hmm, je vais devoir vérifier ce que j'ai fait .. bonne prise.
NateJ
1

J'imagine que cela peut être fait avec PowerShell.

Connaissant Perl , j'ai tendance à l'utiliser pour ce genre de choses

perl -l -n -e "unlink" filenames.txt
RedGrittyBrick
la source
1

La première méthode fonctionne après quelques modifications:

  1. ouvrir le bloc-notes
  2. copier tous les noms de fichiers avec extension qui doivent être supprimés après avoir ajouté delau début comme

    del File1.bin
    del File20.bin
    del File21.bin
    
  3. enregistrez le fichier comme xyz.batdans le même dossier

  4. exécuter le fichier
Hassan
la source
2
... le fichier texte de la question contient environ 200 noms de fichiers. Pourquoi ajouter delmanuellement comme vous proposez, alors que des solutions étaient déjà publiées pour l'automatiser? En aparté: tout éditeur sensé aurait un certain support pour la recherche et le remplacement, y compris les fins de ligne (ou les débuts de ligne, en utilisant des expressions régulières), les macros ou pour l' édition en mode bloc ou colonne (souvent initiée en maintenant Option ou Alt enfoncée, puis en sélectionnant un bloc, après quoi on peut simplement taper sur plusieurs lignes à la fois).
Arjan