Windows/윈도우 공통

[스크랩] 도스에서 시스템 츌력 리다이렉션 (화면과 파일로 동시 출력)

99iberty 2014. 1. 29. 13:40

 

http://shadowxx.egloos.com/2333709

 

 

도스에서 화면과 파일로 동시에 출력하려고 하면,
dir 을 aaa.txt 라는 파일과 화면에 동시에 출력하려면 tee 라는 명령어를 사용하면 된다.
dir 2>&1 | tee aaa.txt
아래는 리디렉션 관련 정보
참고
0은 > 리디렉션 출력 연산자에 대한 기본 핸들입니다.

핸들 복사

& 리디렉션 연산자는 지정된 한 핸들에서 지정된 다른 핸들로 출력 또는 입력을 복사합니다. 예를 들어 dir 출력을 File.txt에 보내고 오류 출력을 File.txt에 보내려면 다음과 같이 입력합니다.
dir>c:\file.txt 2>&1
핸들을 복사하면 핸들의 모든 원본 항목의 특징을 복사합니다. 예를 들어 핸들이 쓰기 전용 권한을 가지고 있으면 그 핸들의 모든 복사본도 쓰기 전용 권한을 갖습니다. 읽기 전용 권한이 있는 핸들을 쓰기 전용 권한이 있는 핸들로 복사할 수는 없습니다.

& 연산자를 사용한 입력 리디렉션 및 복사

복사 연산자(&)와 함께 리디렉션 입력 연산자(<)를 사용하려면 지정한 파일이 이미 존재하는 파일이어야 합니다. 입력 파일이 있으면 Cmd.exe는 해당 파일을 읽기 전용으로 열어 파일에 포함된 문자를 키보드에서 입력한 것처럼 명령에 대한 입력으로 보냅니다. 핸들을 지정하면 Cmd.exe가 지정한 핸들을 시스템에 있는 기존 핸들로 복사합니다.
예를 들어 File.txt를 핸들 0(STDIN)에서 입력 읽기로 열려면 다음과 같이 입력합니다.
< file.txt
File.txt를 열고 내용을 정렬한 다음 출력(STDOUT)을 명령 프롬프트 창에 보내려면 다음과 같이 입력합니다.
sort< file.txt
File.txt를 찾은 다음 핸들 1(STDOUT)과 핸들 2(STDERR)를 Search.txt에 리디렉션하려면 다음과 같이 입력합니다.
findfile file.txt>search.txt 2<&1
사용자 지정 핸들 3을 핸들 0(STDIN)에 입력 읽기로 복사하려면 다음과 같이 입력합니다.
<&3

& 연산자를 사용한 출력 리디렉션 및 복사

출력을 파일로 리디렉션하고 기존 파일 이름을 지정하면 Cmd.exe는 파일을 쓰기 전용으로 열고 파일의 내용을 덮어씁니다. 핸들을 지정하면 Cmd.exe가 파일을 기존 핸들로 복사합니다.
사용자 지정 핸들 3을 핸들 1로 복사하려면 다음과 같이 입력합니다.
>&3
핸들 2(STDERR)를 포함하여 ipconfig 명령의 모든 출력을 핸들 1(STDOUT)로 리디렉션한 다음 출력을 Output.log로 리디렉션하려면 다음과 같이 입력합니다.
ipconfig.exe>>output.log 2>&1

>> 리디렉션 연산자를 사용하여 출력 추가

기존 파일 내용을 손실하지 않고 명령 출력을 파일 끝에 추가하려면 연속으로 두 개의 보다 크다 기호를 사용합니다(예: >>). 예를 들어 다음 명령은 dir 명령으로 생성된 디렉터리 목록을 Dirlist.txt 파일에 추가합니다.
dir>>dirlist.txt
netstat 명령의 출력을 Tcpinfo.txt 끝에 추가하려면 다음과 같이 입력합니다.
netstat>>tcpinfo.txt

파이프 연산자(|) 사용

파이프 연산자(|)는 기본적으로 STDOUT인 한 명령의 출력을 가져와 기본적으로 STDIN인 다른 명령의 입력에 리디렉션합니다. 예를 들어 다음 명령은 디렉터리를 정렬합니다.
dir | sort
이 예제에서 두 명령은 동시에 시작하지만 sort 명령은 dir 명령의 출력을 받을 때까지 일시 중지됩니다. sort 명령은 dir 명령의 출력을 입력으로 사용한 다음 해당 출력을 핸들 1(STDOUT)로 보냅니다.

리디렉션 연산자로 명령 조합

필터 명령과 다른 명령 및 파일 이름을 조합하여 사용자 지정 명령을 만들 수 있습니다. 예를 들어 다음 명령을 사용하여 문자열 "LOG"가 있는 파일 이름을 저장할 수 있습니다.
dir /b | find "log" loglist.txt
dir 명령의 출력은 find 필터 명령을 통해 보내집니다. 문자열 "LOG"가 있는 파일 이름은 Loglist.txt에 파일 이름 목록(예: NetshConfig.log, Logdat.svd, Mylog.bat)으로 저장됩니다.
같은 명령에 둘 이상의 필터를 사용하려면 파이프(|)를 사용하여 필터를 구분합니다. 예를 들어 다음 명령은 C 드라이브의 모든 디렉터리를 검색하여 문자열 "Log"가 있는 파일 이름을 찾은 다음 한 번에 한 화면씩 표시합니다.
dir c:\ /s /b | find "log" | more
파이프(|)를 사용하면 Cmd.exe가 find 필터 명령을 통해 dir 명령을 보내도록 지시할 수 있습니다. find 명령은 "LOG" 문자열이 있는 파일 이름만 선택합니다. more 명령은 find 명령으로 선택된 파일 이름을 한 번에 하나의 명령 프롬프트 창 만큼씩 표시합니다. 필터 명령에 대한 자세한 내용은 필터 사용 을 참조하십시오.

null