我想要目录中的所有 csv 文件,其文件名不包含单词“summary”。在命令提示符中,我可以键入以下命令
dir /b my_dir\*.csv | find /V "summary"
当我尝试将上述命令传输到批处理文件时,我遇到了一个问题,因为 for 循环不支持管道命令。那就是我不能做以下事情
FOR /f %%A in ('dir /b my_dir\*.csv | find /V "summary"') do (
rem want to do something here
)
有人可以告诉我如何解决上述问题吗?
提前致谢!
最佳答案
您需要对 |
字符进行转义,以防止在解析循环命令 时对其进行解释。使用 ^
对其进行转义:
FOR /f "delims=" %%A in ('dir /b "my_dir\*.csv" <b>^|</b> find /V "summary"') do (
rem do what you want with %%A here
)
一旦转义,|
就成为 '
分隔字符串的一部分。根据语法,当该字符串与循环分开解析时,它仅被解释为特殊符号,作为“子命令”。这是在 解析循环之后完成的。
关于windows - 带有 for 循环和管道的批处理脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6026773/