2009-07-24 8 views
1

J'ai une longue liste de noms de fichiers dans un fichier txt, que je généré à l'aideLot Supprimer les fichiers à partir du fichier cmd ligne

findstr /M "string here" *.* > c:\files.log 

Le fichier est d'environ 3 Mo. Maintenant, je veux supprimer tous ces fichiers. J'ai essayé del < c: \ files.log mais cela ne fonctionne pas. Que devrais-je utiliser?

+1

appartient probablement à ServerFault ou SuperUser –

+2

La programmation par lots est la programmation, n'est-ce pas? –

Répondre

3

lots pour NT sur place prend en charge une boucle avec des interrupteurs spéciaux

FOR/F semble correspondre ce que vous voulez comme permet l'entrée d'un fichier et des délimiteurs de position.

Voir .. http://ss64.com/nt/for_f.html

Vous cherchez quelque chose comme ...

pour/F "tokens = *" %% un dans (files.log) ne supprimons "%% un"

+0

Pour les points bonus, OP pourrait placer son entrée findstr dans le FOR. –

+0

Absolument .... Toutefois, la segmentation des choses en fichiers vous permet d'inspecter/déboguer les fichiers batch. – CMB

+0

Rob: Vous ne pouvez pas canaliser pour. Vous devriez utiliser 'for/f% x dans ('une commande')'. Mais vous ne pouvez pas y entrer :) – Joey

0

Si vous installez Cygwin ou quelque chose de similaire, il est juste:

cat files.log | xargs rm 
1

Cela devrait fonctionner:

for /f "tokens=1*" %a in (filelist.txt) do del %a 
+0

Aussi "delims =" n'a que la fin de ligne comme délimiteur, pour les noms de fichiers longs. – Jay

0

Vous devez avoir %% un et non un% à l'intérieur du fichier de commandes % pour un cmd

Questions connexes