基于findstr正则表达式删除文件的批处理脚本

4

我正在尝试使用批处理脚本基于正则表达式删除一些文件。我的代码如下:

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

我知道我的内部命令可以自行工作,给我目录列表,但是当我像这样嵌入到for循环中时,我会收到一个错误信息“| was unexpected at this time.”。在FOR循环命令中不允许使用管道吗?还是我需要转义或者其他操作?如果您能提供任何帮助,将不胜感激。
2个回答

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

| 前添加 ^ 来转义它。


@Retsam - 就我所知,^ 已经是批处理文件的转义字符很长时间了,或许超过 15 年了。 - user93353
"%%a" 导致了 "%%a was unexpected at this time"。只需要使用 "%a" 就可以了。 - Subangkar KrS

-7

2
当你转义时,它是完全合法的。 - Robert Horvick
我的错 - 忘记了转义管道符。不过,CMD在复杂脚本编写方面仍然很糟糕。 - Gary Walker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接