如何使用管道作为批处理文件中的变量的命令返回值

时间:2015-07-01 14:22:52

标签: windows batch-file pipe

我想在搜索它之后立即在Windows中提取文件,如下所示:

7z [args] | ls | grep filename

在我的Windows批处理脚本中,它的:

7z [args] | dir /B | findstr filename
单独搜索就像在linux中一样完美,但我不能将它传递给变量,或者直接传递给7z作为输入。

我试过

    左边的
  • 管道
  • 右边的管道
  • for /f "delims=" %%a in ('dir /B ^| findstr onboard.zip') do @set Value=%%a

但我的所有解决方案都因错误而崩溃。

我的想法是将找到的文件传递给任何变量,或者直接将其提供给解压缩工具。 你有任何工作解决方案/解决方法吗? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

1.5天之后,我意识到DIR内置了搜索功能,可以在没有管道的情况下解决我的问题:

dir /b *filename

但仍然真的对你的 - 管道包含 - 解决方案感兴趣:)

答案 1 :(得分:0)

我不太确定你想要什么。 7z是否会生成文件名列表?

for /f "usebackq tokens=*" %f in (`7z [args]`) do (if exist "%f" echo found file "%f")

如果在批处理脚本中使用它,百分比字符必须加倍。