批处理脚本管道并重定向到文件

2024-09-24 22:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在批处理脚本和管道方面,我缺少了一些东西

我想检查python是否安装了必要的库,如果没有,则会出错

使用此命令检查

python -m pip freeze -r ./requirements.txt | findstr "WARNING"

它本身输出的正是我所需要的

for /f "delims=" %%i in ('python -m pip freeze -r ./requirements.txt | findstr "WARNING"') do set output=%%i

还是一个文件

python -m pip freeze -r ./requirements.txt | findstr "WARNING" > tmpfile.txt

两个都是空的,我做错了什么


Tags: pipin命令txt脚本foroutput管道
2条回答

对于FOR/F,需要转义管道字符

for /f "delims=" %%i in ('python -m pip freeze -r ./requirements.txt ^| findstr "WARNING"') do (
  set output=%%i
)

据我所知,这里的问题是警告命令被输出到标准错误句柄,而不是标准错误句柄,因此for不会捕获输出

将其重定向到标准输出并将转义添加到|似乎可以解决问题

for /f "delims=" %%i in ('2^>^&1 python -m pip freeze -r ./requirements.txt ^| findstr WARNING') do set output=%%i

相关问题 更多 >