2

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

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

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

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

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

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

4

2 回答 2

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

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

于 2012-06-05T22:15:41.777 回答
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
于 2013-02-01T22:53:16.327 回答