2012-06-05 10 views
2

dos 배치 스크립트를 작성 중이며 명령 줄을 표준 출력과 텍스트 파일로 리디렉션하고 싶습니다. 둘 중 하나만 할 수는 있지만 둘 다 할 수는 없습니다. 또한 다른 배치 스크립트로 호출하거나 명령 줄에서 호출 할 수 없습니다.표준 출력을 화면과 텍스트 파일 모두로 리디렉션

실행하려는 명령은 reg add "%regKey%" /f 이고 출력은 The operation completed sucessfully.이며 표준 출력에 표시하고 텍스트 파일에 추가하고 싶습니다.

는 지금까지, 나는 시도했다 :

reg add "%regKey%" /f>>%logfile%>CON <은 - 단지

reg add "%regKey%" /f>CON>>%logfile% <을 TEXTFILE에 추가 ​​- 단지 표준 출력

에 표시 나는이 SO을 보았다,하지만 떠들썩한 파티를 위해입니다.

+0

플랫폼에 'tee' 명령이 없습니까? – sarnold

+0

@sarnold, 불행히도'tee'를 사용할 수 없습니다. –

답변

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

자신과 다른 사람이 귀하의 스크립트를 보면서 쉽게 이해할 수 있습니다.

+0

화면에 표시하고 명령 출력을 텍스트 파일로 파이프합니다. 텍스트 파일의 모든 내용을 표시합니다. 나는 그것이 스크립트를 실행하는 사람을 놀라게 할 것이라고 생각한다. 또한, 여러 명령에 대해 그렇게해야 화면이 바쁠 것입니다. –

+0

가 작동합니다. 결국'type '을 할 필요가 있습니다. 잠시 멈췄지만 괜찮습니다. –

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 
관련 문제