2011-12-05 6 views
4

명령 프롬프트에서 실행하는 동안 출력을 텍스트 파일에 저장하는 일반 구문을 알고 있습니다.명령 프롬프트에서 출력을 저장하는 방법

하지만 내 필요가 다릅니다. 명령 프롬프트 창에서 텍스트 파일로 저장하려고합니다. > c : \ dirlist.txt를 사용하면 텍스트 파일로 저장되지만 명령 프롬프트 창에서 볼 수 없습니다.

명령 프롬프트에서 확인하고 텍스트 파일로 저장해야합니다. 도움이

+0

에서입니다. – Jon

답변

1

Windows 용 tee 프로그램을 원합니다. PowerShell을 사용할 수 있으면 you already have what you need을 사용할 수 있습니다. 그렇지 않으면 시스템에서 작동하는 구현에 대해 google을 참조하십시오.

또는 출력을 파일로 리디렉션하고 다른 로그 프롬프트 (예 : tail)에서 라이브 로그 뷰어로 파일을 관찰 할 수 있습니다.

2

처음에는 TEE.BAT 프로그램을 작성하는 것이 상대적으로 쉽습니다. 유일한 문제는 set /p 명령 (명령의 출력을 얻는 데 사용됨)이 파일 끝과 빈 줄을 구분하지 않는다는 것입니다. 그러나

tee CopyOfFile.txt < File.txt 

:

@echo off 
:: usage: AnyCommand | TEE filename 
setlocal EnableDelayedExpansion 
if exist %1 del %1 
:nextLine 
set line=:EOF 
set /p line= 
if "!line!" == ":EOF" goto :eof 
echo(!line! 
echo(!line!>> %1 
goto nextLine 

당신이 배치 파일이 실제로이 방식으로 작동하는지 테스트 할 수있다 : 이것은 출력이 첫 번째 빈 라인 (또는 파일의 끝)까지 캡처됩니다 것을 의미 이 배치 파일이이 디자인 된 방식으로 사용하면, 그것은 이제 다음 실패

type File.txt | tee CopyOfFile.txt 

이전 라인은 때로는 작품을 좋아하고 때로는 표시 및 저장 파일의 첫 번째 줄. 여러 번 테스트를했는데 오류의 원인을 파악할 수 없습니다. 아마도 누군가 (jeb?)이 경우에 무슨 일이 일어나고 있는지 설명하고 해결책을 제시 할 수 있습니다.

+0

[How Set/p works] (http://www.dostips.com/forum/viewtopic.php?p=9781#p9781)에서 확인해 보겠습니다. set/p는 파이프의 데이터를 기다리지 않고/p가 ''으로 데이터를 읽을 수는 없지만 파이프는 ''을 제거합니다. – jeb

+0

마지막 문장은 말도 안됩니다. 파이프 버퍼는'CR/LF' 쌍을 포함하고,'set/p'는 항상 완전한 (파이프) 버퍼를 읽지 만 첫 번째'CR/LF' 이후의 모든 것을 제거하므로 줄을 잃을 수 있습니다 – jeb

0

Aacini와 같은 일괄 처리로 자신의 티를 작성할 수 있지만 단점은 없습니다. 가 해당 사이트에 더 적합한 이후

@ECHO OFF 
setlocal DisableDelayedExpansion 
for /F "delims=" %%A in ('findstr /n "^" ') do (
    set "line=%%A" 
    setlocal EnableDelayedExpansion 
    set "line=!line:*:=!" 
    (echo(!line!) 
    (echo(!line!) > "%~1" 
    endlocal 
) 

초기 아이디어는 walid2me echo to screen and file in a single line 슈퍼 유저에 질문을 전송하는 투표

관련 문제