代码之家  ›  专栏  ›  技术社区  ›  Pekka

如何隐藏批量输出

  •  23
  • Pekka  · 技术社区  · 14 年前

    我正在对一个批处理脚本进行最后的润色,该脚本将本地编辑的网站的内容传输到Internet。

    该脚本将在控制台窗口中打开,并输出管理员在出现问题时需要查看的大量内容。但是,在这种情况下,输出是以电子邮件的形式发送的,因此不需要显示输出并混淆不必要地运行更新的用户。我只需要显示几行(比如“开始同步…”和“同步完成”)。

    有人能想出一种方法停止批处理脚本中的输出吗?有点像“回声消失”?

    简单的

    my_batch_file > nul
    

    不会剪的,因为正如我说的,我需要展示一些东西。

    3 回复  |  直到 14 年前
        1
  •  35
  •   davr    14 年前

    Windows实际上有stdout和stderr的概念。下面是一个例子:

    测试:

    @echo off
    echo verbose stuff 1
    echo verbose stuff 2
    echo verbose stuff 3
    echo important stuff! >&2
    echo verbose stuff 4
    

    如果你把它当作 test.bat 你会得到全部的输出。如果你把它当作 test.bat >nul '然后您将只获得'重要'输出(任何重定向到stderr的内容,使用>&2)

        2
  •  8
  •   jspcal    14 年前

    批处理脚本可以自己运行

    @echo off
    if "%1" == "1" goto else
    echo start
    call %0 1 > nul
    echo done
    goto done
    :else:
    echo do stuff
    :done:
    

    第二次调用的stdout转到nul

        3
  •  0
  •   Anon.    14 年前

    你可以写一些需要展示的东西 stderr 而不是 stdout .

    或者,重定向要隐藏的各个部分的输出。