Windows WIN cmd重定向操作符是否防止重复行?

Windows WIN cmd重定向操作符是否防止重复行?,windows,batch-file,cmd,io-redirection,Windows,Batch File,Cmd,Io Redirection,输出到文件时,如何防止重复行 ffmpeg.exe filename.mp4 -o filename.mkv >> output.log .log文件将填充10多行进度:对于每个编码步骤,0%以此类推 如何防止它只写进度:0%一次,然后等待进度1%,依此类推?这里有一个批处理代码,其中for从执行命令的STDOUT和STDERR读取每一行,并将其与以前的读取行进行比较。如果新读取的行与以前读取的行不同,则使用重定向操作符将该行输出到文件 @echo off setlocal Ena

输出到文件时,如何防止重复行

ffmpeg.exe filename.mp4 -o filename.mkv >> output.log
.log文件将填充10多行进度:对于每个编码步骤,0%以此类推


如何防止它只写进度:0%一次,然后等待进度1%,依此类推?

这里有一个批处理代码,其中for从执行命令的STDOUTSTDERR读取每一行,并将其与以前的读取行进行比较。如果新读取的行与以前读取的行不同,则使用重定向操作符将该行输出到文件

@echo off
setlocal EnableExtensions EnableDelayedExpansion
del output.log 2>nul
set "Line="
for /F "delims=" %%I in ('ffmpeg.exe filename.mp4 -o filename.mkv 2^>^&1') do (
    if not "!Line!" == "%%I" (
        set "Line=%%I"
        echo !Line!>>output.log
    )
)
endlocal
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • del/?
  • echo/?
  • endlocal/?
  • 获取/?
  • 如果/?
  • 设置/?
  • setlocal/?
另请阅读有关的Microsoft文章

PS:我没有安装
ffmpeg
,因此无法进行上述测试,也没有安装此工具的文档。但请看一看,因为我认为您真正需要的是将写入STDERR的消息重定向到输出文件中,其中包括:

ffmpeg.exe filename.mp4 -o filename.mkv 2>>output.log

重定向无法筛选数据。。。