将标准输出重定向到屏幕和文本文件

时间:2012-06-05 21:58:00

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

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

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

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

reg add "%regKey%" /f>>%logfile%>CON< - 仅附加到文本文件

reg add "%regKey%" /f>CON>>%logfile%< - 仅显示在标准输出

我看到了这个SO,但这是为了bash。

2 个答案:

答案 0 :(得分:2)

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

对于您自己以及其他任何会看到您的脚本的人来说,这更容易理解。

答案 1 :(得分:0)

我解决了。这是魔术,虽然表现不是那么好,但对某些事情不起作用:

@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