中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 07:05
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何将批处理运行的_最终_屏显信息输出到文件? 查看 1,108 回复 11
楼 主 如何将批处理运行的_最终_屏显信息输出到文件? 发表于 2009-02-07 16:51 ·  中国 浙江 杭州 电信
新手上路
积分 17
发帖 9
注册 2008-03-29 18:01
18年会员
UID 114369
性别 男
状态 离线
如题.

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

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


运行中2:


最终屏显:


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

若使用2>log,则得到的文件是类似下面这样
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


而我所希望得到的是如最终屏显所示的,(不需要中间这么多行的),类似如下格式的文件:
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 ]
2 发表于 2009-02-07 17:00 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
findstr /v "%%" log
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
3 发表于 2009-02-07 21:04 ·  中国 浙江 杭州 电信
新手上路
积分 17
发帖 9
注册 2008-03-29 18:01
18年会员
UID 114369
性别 男
状态 离线
Originally posted by slore at 2009-2-7 05:00 PM:
findstr /v "%%" log

感谢.
但我上面举的flac的例子仅为举例.用findstr似乎无法通用在其他实例上.
是否有通用性较好的方法.
4 发表于 2009-02-07 21:40 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
是不是前三行和最后一行呢
精简
=> 个人网志
5 发表于 2009-02-08 12:50 ·  中国 浙江 杭州 电信
新手上路
积分 17
发帖 9
注册 2008-03-29 18:01
18年会员
UID 114369
性别 男
状态 离线
Originally posted by netbenton at 2009-2-7 09:40 PM:
是不是前三行和最后一行呢

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

我的需求是如标题所述, 将_最终_屏显输出到文件.
6 发表于 2009-02-08 13:00 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
你再许个不同的例子看,程序要能通用,就是找到不同例子间相同的地方,去处理它,否则,是无法写的。
精简
=> 个人网志
7 发表于 2009-02-08 20:04 ·  中国 浙江 杭州 电信
新手上路
积分 17
发帖 9
注册 2008-03-29 18:01
18年会员
UID 114369
性别 男
状态 离线
Originally posted by netbenton at 2009-2-8 01:00 PM:
你再许个不同的例子看,程序要能通用,就是找到不同例子间相同的地方,去处理它,否则,是无法写的。

您好.
我换一种表达方式.
有个bat,运行完毕pause后,此时我在cmd窗口全选,复制,保存为文本.
我要的就是自动保存这个文本的方法.
而不是将stderr重定向到log文件后怎么去处理这个log的方法.
8 发表于 2009-02-08 20:09 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
flac.exe test.wav|findstr /c:"wrote">>log.txt

[ Last edited by yishanju on 2009-2-8 at 20:36 ]

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
9 发表于 2009-02-08 23:05 ·  中国 浙江 杭州 电信
新手上路
积分 17
发帖 9
注册 2008-03-29 18:01
18年会员
UID 114369
性别 男
状态 离线
Originally posted by yishanju at 2009-2-8 08:09 PM:
flac.exe test.wav|findstr /c:"wrote">>log.txt

感谢您的回复.
不过如果回复前能看一下帖子就更好了,能节约你我的时间.
我要的不是对此个例的解决方案.
10 发表于 2009-02-08 23:21 ·  中国 北京 海淀区 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
你还真让人难以理解

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
11 发表于 2009-02-08 23:23 ·  中国 北京 海淀区 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
能重新把图传一下么
传个能看得清的图

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
12 看看这样行吗 发表于 2009-02-08 23:33 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
@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 ]
精简
=> 个人网志
论坛跳转: