Board logo

标题: [求助]如何实现既在屏幕上显示执行结果又可以把结果保存到 [打印本页]

作者: zhaxi     时间: 2006-6-27 22:28    标题: [求助]如何实现既在屏幕上显示执行结果又可以把结果保存到

这个标题的意思是说,比如执行了xcopy命令,会在屏幕上显示很多条执行结果:

---------------------------------------
\\192.168.1.1\update\1.txt
\\192.168.1.1\update\2.txt
\\192.168.1.1\update\3.txt
复制了3个文件
---------------------------------------

如果我需要将此命令结果保存到d:\a.txt,故我使用了xcopy ....>d:\a.txt ,但这样做的结果是屏幕上不会显示上面执行的结果了。虽然现在可以再最后加一句
type d:\a.txt 将刚才的结果在屏幕上输出,但却具有滞后效果。而且不是想当初一样每xcopy一个文件就会在屏幕上动态显示执行结果。

我现在想问有没有一种语句可以即不影响在屏幕上显示结果,同时可以将结果保存到一个文件中。
作者: Wengier     时间: 2006-6-28 10:51
可以通过提供这种功能的工具来做到,如TEE,例如使用以下语法:

XCOPY .... | TEE D:\A.TXT

这样既不影响在屏幕上显示结果,同时可以将结果保存到一个(或多个)文件中。
作者: zhaxi     时间: 2006-6-28 12:47
功能说明:读取标准输入的数据,并将其内容输出成文件。
  语   法:tee [-ai][--help][--version][文件…]
  补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。我们可利用tee把管道导入的数据存成文件,甚至一次保存数份文件。
  参   数:-a 附加到既有文件的后面,而非覆盖它。如果给予tee指令的文件名称已经存在,预设会覆盖该文件的内容。加上此参数后,数据会新增在该文件内容的最后面,而不会删除原先之内容。
       -i 忽略中断信号
       --help 在线帮助
       --version 显示版本信息
  范   例:
  列出文本文件slayers.story的内容,同时复制3份副本,文件名称分别为ss-copy1、ss-copy2、ss-copy3:
  $ cat slayers.story |tee ss-copy1 ss-copy2 ss-copy3

-----------------------------------------------------------------------------------------

可惜我就是下载不到这个 软件啊。DOS之家里也不知道放在哪个分类下。你能告诉我下载地址吗?
作者: Wengier     时间: 2006-6-28 13:33


  Quote:
Originally posted by zhaxi at 2006-6-28 12:47 PM:
功能说明:读取标准输入的数据,并将其内容输出成文件。
  语   法:tee [-ai][--help][--version][文件…]
  补充说明:tee指令会从标准输入设备 ...

那些网站中是没有这个软件的。DOS版的TEE见附件:
附件 1: TEE.EXE (2006-6-28 13:33, 62.5 K, 下载附件所需积分 1点 ,下载次数: 156)

作者: qdcr     时间: 2006-6-28 13:56
同问这个问题:
@echo off
MKDIR "..\backup">>%DATE%.log
pause

如果back文件夹存在,在dos console窗口中会显示
A subdirectory or file ..\backup already exists.
而%date%.log中内容为空。
为什么重定向到log文件没有用?
作者: Wengier     时间: 2006-6-28 14:01
MKDIR "..\backup">>%DATE%.log

应改为:

MKDIR "..\backup" 2>>%DATE%.log

MD "..\backup" 2>>%DATE%.log
作者: asbai     时间: 2006-6-28 14:01


  Quote:
Originally posted by qdcr at 2006-6-28 13:56:
同问这个问题:
@echo off
MKDIR "..\backup">>%DATE%.log
pause

如果back文件夹存在,在dos console窗口中会显示
A subdirectory or file ..\backup already exis ...

>> 只重定向标准输出,不重定向错误输出,要同时重定向错误输出,使用:

MKDIR "..\backup">>%DATE%.log 2>&1
作者: electronixtar     时间: 2006-6-28 14:06
为什么用这个

xcopy ........ 1>con 1>D:\a.txt

或者

xcopy ....... 1>con 1>D:\a.txt 1<&2

不行呢?

可不可以把句柄1的数据copy到句柄4中,然后1到屏幕,4到文件?

或者,用mode命令?感觉上用第三方工具不是很爽

[ Last edited by electronixtar on 2006-6-28 at 14:24 ]
作者: zhaxi     时间: 2006-6-28 19:36


  Quote:
Originally posted by Wengier at 2006-6-28 13:33:


那些网站中是没有这个软件的。DOS版的TEE见附件:

谢谢Wengier啊。我已经拷贝下来了。马上用用看。

另外谁能不能帮我把 choice.exe 也传上来,呵呵。我现在是在XP下使用。还不会装dos。几个月来就在xp下写批处理。
作者: Wengier     时间: 2006-6-29 01:21


  Quote:
Originally posted by electronixtar at 2006-6-28 02:06 PM:
为什么用这个

xcopy ........ 1>con 1>D:\a.txt

或者

xcopy ....... 1>con 1>D:\a.txt 1<&2

不行呢?

可不可以把句柄1的数据copy到句柄4中,然后1到屏幕,4到文件?

或者,用mode命令?感觉上用第三方工具不是很爽

这些当然是不行了,如果你真想不用第三方工具来实现的话,还不如这样:
xcopy ....... >a.txt | type a.txt
作者: Wengier     时间: 2006-6-29 01:24


  Quote:
Originally posted by zhaxi at 2006-6-28 07:36 PM:



谢谢Wengier啊。我已经拷贝下来了。马上用用看。

另外谁能不能帮我把 choice.exe 也传上来,呵呵。我现在是在XP下使用。还不会装dos。几个月来� ...

choice命令基本上只在纯DOS下比较有用,在XP下可以用set /p来代替。
作者: zhaxi     时间: 2006-6-29 18:54
为什么我在xp的cmd中使用tee以后弹出一个新的窗口,显示了一行乱码就结束了。我猜这行乱码肯定就是“已复制 1个文件”。 我要安装什么东西才能把乱码去掉呢。

COPY d:\dos\end.txt d:\ | TEE D:\A.TXT
作者: Wengier     时间: 2006-6-30 01:46


  Quote:
Originally posted by zhaxi at 2006-6-29 06:54 PM:
为什么我在xp的cmd中使用tee以后弹出一个新的窗口,显示了一行乱码就结束了。我猜这行乱码肯定就是“已复制 1个文件”。 我要安装什么东西才能把� ...

我自己试了一下上面这个命令,但并没有发现什么弹出显示了一行乱码的新窗口呀?
作者: zhaxi     时间: 2006-7-2 16:24
哎。我在xp的cmd下运行Tee后好象显示不支持中文名。遇到有中文名的路径显示为???。
这该怎么办啊。
作者: Wengier     时间: 2006-7-3 09:46
用"chcp 936"命令可将当前显示代码页切换为简体中文。
作者: zhaxi     时间: 2006-7-3 12:49
我的就是936。 打开tee命令后不能输入汉字。只能输入英文。
作者: Wengier     时间: 2006-7-3 23:28
我上次上传的是DOS版的TEE。如果你是想在NT CMD下用的话,应使用Win32 Console版的TEE,见附件:
附件 1: tee.exe (2006-7-3 23:28, 16.5 K, 下载附件所需积分 1点 ,下载次数: 38)

作者: zhaxi     时间: 2006-7-5 13:10
非常非常感谢你啊。这次可以了,哈哈。

不过真是不好意思再问一下。tee产生的文件1.txt里回车符号成了一个个黑色框。我一说你肯定就知道了。所有输出的信息成了一行,行内把实际的每行以黑色框分隔开。

怎么才能把信息显示为正常的很多行呢?

我试了用type 1.txt把刚才的输出结果显示出来,看到又是正常的。但是用type 1.txt > 2.txt输出到2.txt里,发现结果和1.txt里一样。还是有黑色小框。
作者: darkradx     时间: 2006-7-5 15:29
CRLF的問題
作者: zhaxi     时间: 2006-7-5 18:56
不过我想了个办法解决。
把它粘贴到另外一个文件就好了。哈哈。
谢谢17楼。我的程序因为你的TEE把最后一个大的功能实现了。


最后一个问题:打开Tee以后如何退出啊?

[ Last edited by zhaxi on 2006-7-5 at 18:57 ]
作者: Wengier     时间: 2006-7-5 22:13
CRLF的问题用UNIX2DOS之类的小工具就可以直接转换,但其实没有必要,因为TYPE等命令显示结果均是正常的。

要退出TEE很简单的,Ctrl+C或Ctrl+Z均可。
作者: lililulula     时间: 2007-3-29 03:04
想下载附件啊-    -
作者: woxingwoxiu     时间: 2007-4-21 02:51
太棒了,我要,感谢楼主
作者: ancestor     时间: 2007-5-13 07:30
非常感谢,我也在找这个功能,谢谢了!
作者: plikefly     时间: 2007-11-12 15:22
看来我还是使用vbs吧,这样的话,总不能每次都是这样ctr+c吧
不过东西是好东西,收藏先 o(∩_∩)o...哈哈
作者: xcelcui     时间: 2008-9-10 10:49
找这个方法很久了,下来试试
作者: liujiana     时间: 2008-12-2 16:52
关注这个问题啊,我有一个程序,无法用>捕捉输出,不知道这个tee行不