Board logo

标题: [其他] 如何实现将指定命令语句的执行结果先回显然后写入文件 [打印本页]

作者: ibm    时间: 2008-11-22 19:54     标题: 如何实现将指定命令语句的执行结果先回显然后写入文件

本帖最后由 pcl_test 于 2016-9-5 15:49 编辑

举下例子:
dir c: /a /s
现在想把这个命令的结果回显之后,写入文件,
或是回显的同时写入文件,
但不能先写入文件,再回显,
可以实现吗?

补充:这个命令执行的过程可能需要相当长的时间,如果先写入文件再 type,那长时间的等待似乎不妥,本人是想回显进度,但“进度”又很重要,想保存下来,而且不能开两个窗口同时执行,那会占用CPU时间,如果没有更好的办法,只能使用第三方工具了。


或者还有另外一个思路:
命令在执行时,先写入name.txt,
命令需要2个小时才能结束,
与此同时,name.txt这个文件的内容也是随着命令的执行而变化,
能不能让name.txt的最后行的的内容显示在BAT的窗口里,循环执行,直到遇到“完成”而停止

[ 本帖最后由 ibm 于 2008-11-22 20:56 编辑 ]
作者: wxcute    时间: 2008-11-22 20:12

我认为是不可能的。

请看重定向一文。命令的结果只有一个输出指向,在这里不是指到文件就是指到屏幕上。

dir 的信息默认是显示在屏幕上,当你重定向到文件后屏幕上的显示就同时被屏蔽,因为一个句柄不可能同时指向两个地方。

我认为只能先重定向到文件,再 type 显示这个文件了。
作者: sylovanas    时间: 2008-11-22 20:22

第三方工具可办到

MTEE
http://www.commandline.co.uk/mtee/

用途: 转换输出文字格式
同时也可使用至多输出文件

EX:
C:\>@echo 123456 | MTEE 1.TXT
123456
C:\>Type 1.TXT
123456

C:\>@echo 234567 | MTEE /+ 1.TXT
234567
C:\>Type 1.TXT
123456
234567

C:\>@echo 345678 | MTEE /D 1.TXT
345678
C:\>Type 1.TXT
2008-11-22 345678

/U 可将文件格式转换成Unicode格式
/A 可将文件格式转换成ANSI格式
作者: BBCC    时间: 2008-11-22 20:31

  1. :m
  2. if "%1" equ "-t" goto :t
  3. subst z: "%cd%"
  4. start /b %~s0 -t
  5. :s
  6. dir c: /w>d:\1.txt
  7. exit
  8. :t
  9. if not exist z:\ exit
  10. dir c: /w
  11. pause
  12. goto :s
复制代码
这样合要求不?
作者: ibm    时间: 2008-11-22 20:57

不是我想要的
作者: pusofalse    时间: 2008-11-22 21:30

这个呢?输出到屏幕的同时将内容也输出到文件。。。
http://bbs.bathome.net/viewthrea ... %2B%2Fc%2Bpusofalse
作者: BBCC    时间: 2008-11-22 22:02

貌似不符号LZ的要求,好像他是要执行2 hours,那么执行两次就有点...
作者: Batcher    时间: 2008-11-23 03:02

标题说“先回显然后写入文件”
帖子描述说“先写入文件然后回显”
到底想怎样?
作者: BBCC    时间: 2008-11-23 08:11

但不能先写入文件,再回显,

ms是这样的意思吧。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2