2013-08-22 4 views
3

J'essaie de supprimer certains fichiers avec un script batch, basé sur une expression régulière. Ce que j'est:Script Batch pour supprimer des fichiers basés sur findstr regex

FOR /f "tokens=*" %%a in ('dir /b | findstr MY_REGEX_HERE') DO ECHO %%a 

Je sais que mes travaux de commande interne lui-même, en me donnant la liste des répertoires, mais quand je l'intégrer dans la boucle comme cela, j'obtiens une erreur | was unexpected at this time. est-TUYAUTERIE pas autorisés dans FOR boucles de commande? Ou dois-je m'en échapper ou quelque chose?

Toute aide sur la façon dont je peux le faire serait géniale.

Répondre

7
FOR /f "tokens=*" %%a in ('dir /b ^| findstr MY_REGEX_HERE') DO ECHO %%a 

Escape the | en utilisant un ^ devant elle.

+0

Grand; cela marche. Mais depuis quand est-ce qu'un caractère d'échappement? – Retsam

+0

@Retsam - '^' a été l'un des caractères d'échappement pour les fichiers batch depuis très longtemps pour autant que je sache. Peut être pour plus de 15 ans. – user93353

-7

Le processeur CMD est juste trop limité pour faire ce que vous voulez ici, le tuyau n'est pas légal dans ce contexte. Vous pourriez le mélanger en remplaçant votre talon ECHO par un CALL vers un autre fichier batch, mais même alors vous aurez toujours des problèmes. Voir Want to batch move all files from directories into the parent directory and delete the subdirectory pour ma comparaison rapide des options d'environnements de script.

+2

Il est parfaitement légal lorsque vous vous en échappez. –

+0

Mon mauvais - oublié d'échapper à la pipe. CMD est encore minable pour les scripts complexes. –

Questions connexes