【问题标题】:redirect standard output to both screen and text file将标准输出重定向到屏幕和文本文件
【发布时间】:2012-06-05 21:58:00
【问题描述】:

我正在编写一个 dos 批处理脚本,我想做的一件事是将命令行重定向到标准输出和文本文件。我可以做任何一个,但不能两者兼而有之。另外,我不能用另一个批处理脚本调用它或在命令行调用它。

我要执行的命令是reg add "%regKey%" /f 并且输出是The operation completed sucessfully.,我希望它显示在标准输出上并附加到文本文件中。

到目前为止,我已经尝试过:

reg add "%regKey%" /f>>%logfile%>CON

reg add "%regKey%" /f>CON>>%logfile%

我看到了这个SO,但它是用于 bash 的。

【问题讨论】:

  • 您的平台上真的没有tee 命令可用吗?
  • @sarnold,很遗憾,tee 不可用。

标签: batch-file windows-server-2008 dos


【解决方案1】:
reg add "%regKey%" /f>>%logfile%
type %logfile%

这对你自己和其他任何会来看你的脚本的人来说更容易理解。

【讨论】:

  • 它确实显示在屏幕上并将命令输出通过管道传输到文本文件。但它也会显示文本文件中的所有内容。我认为这会吓到运行脚本的人。另外,我需要对多个命令执行此操作,这样屏幕会变得很忙。
  • 那行得通。我只需要在最后做type。有一个暂停,但没关系。
【解决方案2】:

我解决了。这就是魔力,虽然性能不是那么好,而且它不适用于某些事情:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set logfile=test.out
echo. 2>%logfile% 
set /A count=0
set /A lastline=0
:loop
if not %count%==100 (
  set /A count += 1
  SET PR >> %logfile%
  CALL :printlog
  goto :loop
)
goto :pause
:printlog
SET incount=0
FOR /F "delims=" %%M in (%logfile%) DO (
    set /A incount +=1
    if %incount% GEQ %lastline% (
      ECHO %%M
      SET /A lastline=%incount%
    )
)
ECHO -
EXIT /B 0
:pause
pause

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多