Board logo

标题: 如何将批处理运行的_最终_屏显信息输出到文件? [打印本页]

作者: noe     时间: 2009-2-7 16:51    标题: 如何将批处理运行的_最终_屏显信息输出到文件?

如题.

如,有个bat,运行完毕pause后,此时我在cmd窗口全选,复制,保存为文本.
我要的就是自动保存这个文本的方法.

举个实例便于说明.举例仅为说明之用,并非寻求对此个例的解决方案.
现有一个wav转flac的批处理.
flac.exe test.wav
运行后,屏幕一直在跳动显示进度.直至运行完毕,会给出最终文件大小,压缩率等信息.(若表达不够清楚请看图.
运行中1:


运行中2:


最终屏显:


这最终的屏显信息是我所要的.

若使用2>log,则得到的文件是类似下面这样

  Quote:
flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.


wavtest.wav: 3% complete, ratio=0.251
wavtest.wav: 5% complete, ratio=0.280
wavtest.wav: 7% complete, ratio=0.279
...中间省略
wavtest.wav: 95% complete, ratio=0.450
wavtest.wav: 98% complete, ratio=0.452
wavtest.wav: wrote 4770849 bytes, ratio=0.445

而我所希望得到的是如最终屏显所示的,(不需要中间这么多行的),类似如下格式的文件:

  Quote:
flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

wavtest.wav: wrote 4770849 bytes, ratio=0.445

以上举例仅为说明之用,并非寻求对此个例的解决方案.

可否有命令或工具能够做到?

请各位赐教.谢谢.

PS,我是希望直接得到这样的文件,而不是完成以后再用工具对log进行处理.

[ Last edited by noe on 2009-2-8 at 23:07 ]
作者: slore     时间: 2009-2-7 17:00
findstr /v "%%" log
作者: noe     时间: 2009-2-7 21:04


  Quote:
Originally posted by slore at 2009-2-7 05:00 PM:
findstr /v "%%" log

感谢.
但我上面举的flac的例子仅为举例.用findstr似乎无法通用在其他实例上.
是否有通用性较好的方法.
作者: netbenton     时间: 2009-2-7 21:40
是不是前三行和最后一行呢
作者: noe     时间: 2009-2-8 12:50


  Quote:
Originally posted by netbenton at 2009-2-7 09:40 PM:
是不是前三行和最后一行呢

您好.我想找的是有通用性的解决方案.
这里的实例仅为便于说明使用.

我的需求是如标题所述, 将_最终_屏显输出到文件.
作者: netbenton     时间: 2009-2-8 13:00
你再许个不同的例子看,程序要能通用,就是找到不同例子间相同的地方,去处理它,否则,是无法写的。
作者: noe     时间: 2009-2-8 20:04


  Quote:
Originally posted by netbenton at 2009-2-8 01:00 PM:
你再许个不同的例子看,程序要能通用,就是找到不同例子间相同的地方,去处理它,否则,是无法写的。

您好.
我换一种表达方式.
有个bat,运行完毕pause后,此时我在cmd窗口全选,复制,保存为文本.
我要的就是自动保存这个文本的方法.
而不是将stderr重定向到log文件后怎么去处理这个log的方法.
作者: yishanju     时间: 2009-2-8 20:09
flac.exe test.wav|findstr /c:"wrote">>log.txt

[ Last edited by yishanju on 2009-2-8 at 20:36 ]
作者: noe     时间: 2009-2-8 23:05


  Quote:
Originally posted by yishanju at 2009-2-8 08:09 PM:
flac.exe test.wav|findstr /c:"wrote">>log.txt

感谢您的回复.
不过如果回复前能看一下帖子就更好了,能节约你我的时间.
我要的不是对此个例的解决方案.
作者: yishanju     时间: 2009-2-8 23:21
你还真让人难以理解
作者: yishanju     时间: 2009-2-8 23:23
能重新把图传一下么
传个能看得清的图
作者: netbenton     时间: 2009-2-8 23:33    标题: 看看这样行吗

@echo off
::%1 为指定的输出文件名,否则输出到abcec.txt
::DOS下保存整个屏幕的批处理,不支持中文
goto :begin
f 100 l14 B8 00 B8 50 1F BF 00 02 B9 D0 07 BD 02 08 BA 50 00 AD 3C 20
f 114 l14 75 03 43 75 02 31 DB AA 4A 75 0D B8 0D 0A 29 DF 29 DD 31 DB
f 128 l0e AB BA 50 00 E2 E3 06 1F 89 E9 31 DB 90 90
t=100
g 134
w 200
q
:begin
if '%1'=='' set of=abcec.txt
debug %1%of%<%~f0>nul
start notepad %1%of%

[ Last edited by netbenton on 2009-2-9 at 00:33 ]