• windows下cmd命令行程序输出内容打印到屏幕同时保存到文件


    类似标题的需求在linux下可以使用 tee 命令实现, windows cmd 环境下需要 单独的一个程序来做
    wintee 下载地址(需要代理) 分流下载地址
    示例 echo aaaaa | wtee.exe 1.log -
    tee命令更多使用示例 https://blog.csdn.net/hongrisl/article/details/88060220


    以下是防丢失备份
    tee

      功能说明:读取标准输入的数据,并将其内容输出成文件。
      语   法: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

    tee [-ai][--help][--version][文件...]

    【功能】

    tee以标准输入作为输入,标准输出和文件作为输出。

    【举例】

    tee file //覆盖
    tee -a file //追加

    tee - //输出到标准输出两次
    tee - - //输出到标准输出三次

    tee file1 file2 - //输出到标准输出两次,并写到那两个文件中
    ls | tee file

    另:把标准错误也被tee读取
    ls "*" 2>&1 | tee ls.txt

    *用tee生成一个文件,包含你敲入的内容:

    复制代码

    代码如下:

    $tee testfile

    这样,会提示要你用标准输入输入内容,然后敲回车会将你输入的内容写入testfile和输出到标准输出,如果用[Ctrl]d结束输入([Ctrl]c也行)。如果原来testfile有内容,将会覆盖。

    *把内容追加到文件的末尾行:

    复制代码

    代码如下:

    $tee -a testfile

    结果类似上,不过如果原来testfile有内容则不会覆盖而是追加。

    *生成一个文件,敲入的时候,不接受中断信号:

    复制代码

    代码如下:

    $tee -i testfile

    结果同testfile,不过不会接收中断信号,只能用[Ctrl]d结束,而不能用[Ctrl]c了。

    *执行ls列出目录文件同时将输出保存到文件test中:

    复制代码

    代码如下:

    $ls | tee test

    这样,会像平时一样执行ls命令并将当前目录的文件名输出到标准输出。另外由于进行了tee命令,所以会生成一个test文件,这个test文件的内容和标准输出的内容一样。

    【描述】

    tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。可以用于既想看到标准输出,又想将标准输出保存到文件中的情况。

    参数:

     -a或--append  附加到既有文件的后面,而非覆盖它.
     -i-i或--ignore-interrupts  忽略中断信号。
     --help  在线帮助。
     --version  显示版本信息。

    常用参数
    格式:tee

    只输出到标准输出,因为没有指定文件嘛。

    格式:tee file

    输出到标准输出的同时,保存到文件file中。如果文件不存在,则创建;如果已经存在,则覆盖之。(If a file being written to does not already exist, it is created. If a file being written to already exists, the data it previously
    contained is overwritten unless the `-a' option is used.)

    格式:tee -a file

    输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建;如果已经存在,就在末尾追加内容,而不是覆盖。

    格式:tee -

    输出到标准输出两次。(A FILE of -' causes tee' to send another copy of input to standard output, but this is typically not that useful as the copies are interleaved.)

    格式:tee file1 file2 -

    输出到标准输出两次,同时保存到file1和file2中。

    使用示例补充:

    示例一 tee命令与重定向的对比

    [root@web ~]# seq 5 >1.txt
    [root@web ~]# cat 1.txt
    1
    2
    3
    4
    5
    [root@web ~]# cat 1.txt >2.txt
    [root@web ~]# cat 1.txt | tee 3.txt
    1
    2
    3
    4
    5
    [root@web ~]# cat 2.txt
    1
    2
    3
    4
    5
    [root@web ~]# cat 3.txt
    1
    2
    3
    4
    5
    [root@web ~]# cat 1.txt >>2.txt
    [root@web ~]# cat 1.txt | tee -a 3.txt
    1
    2
    3
    4
    5
    [root@web ~]# cat 2.txt
    1
    2
    3
    4
    5
    1
    2
    3
    4
    5
    [root@web ~]# cat 3.txt
    1
    2
    3
    4
    5
    1
    2
    3
    4
    5
    [root@web ~]#

    示例二 使用tee命令重复输出字符串

    [root@web ~]# echo 12345 | tee
    12345

    [root@web ~]# echo 12345 | tee -
    12345
    12345
    [root@web ~]# echo 12345 | tee - -
    12345
    12345
    12345
    [root@web ~]# echo 12345 | tee - - -
    12345
    12345
    12345
    12345
    [root@web ~]# echo 12345 | tee - - - -
    12345
    12345
    12345
    12345
    12345
    [root@web ~]#

    [root@web ~]# echo -n 12345 | tee

    12345[root@web ~]# echo -n 12345 | tee -
    1234512345[root@web ~]# echo -n 12345 | tee - -
    123451234512345[root@web ~]# echo -n 12345 | tee - - -
    12345123451234512345[root@web ~]# echo -n 12345 | tee - - - -
    1234512345123451234512345[root@web ~]#

    示例三 使用tee命令把标准错误输出也保存到文件

    [root@web ~]# ls "*"
    ls: : 没有那个文件或目录
    [root@web ~]# ls "
    " | tee -
    ls: : 没有那个文件或目录
    [root@web ~]# ls "
    " | tee ls.txt
    ls: : 没有那个文件或目录
    [root@web ~]# cat ls.txt
    [root@web ~]# ls "
    " 2>&1 | tee ls.txt
    ls: *: 没有那个文件或目录
    [root@web ~]# cat ls.txt
    ls: *: 没有那个文件或目录
    [root@web ~]#

  • 相关阅读:
    【leetcode】21-MergeTwoSortedLists
    【leetcode】20-ValidParentheses
    【c++基础】遍历目录并写入txt文件-linux
    【c++基础】字符数组和string相互转换
    【linux基础】使用命令行编译运行c++程序
    第2章 重新组织函数(4):函数对象、替换算法
    第2章 重新组织函数(3):引入解释性变量、分解临时变量和移除对参数的赋值
    第2章 重新组织函数(2):内联函数、内联临时变量和查询函数
    第2章 重新组织函数(1):提炼函数
    第1章 重构,第一个案例(3):运用多态取代switch
  • 原文地址:https://www.cnblogs.com/toumingbai/p/15791981.html
Copyright © 2020-2023  润新知