cmd 창에서, 리눅스 처럼, man 을 쳐서 도움말을 보도록 배치파일을 작성해보자.
단, 도움말이 길어서 차근차근 보기가 어려울때가 많으니까, 파일로 저장해서 메모장으로 보도록 만들자.


그니까 요딴식으로 되는거다. cmd 창에서 man 뒤에다가 명령어 치면, 메모장으로 보여주는거다.


물론, 실행창에다가 cmd /c 로 치면, cmd 창은 알아서 닫히고, 메모장에 도움말만 나온다.  ( 스위치 /c 는 cmd 와 한칸 띄어준다. )


즉, 요딴식으로 치면, attrib.exe 에 대한 도움말만 메모장으로 나오고, 커맨드 창은 사라진다.


더 간단히, 그냥 실행창에,   ' man 명령어 ' 를 쳐도 된다.





암튼, 위의 기능을 하는 배치파일을 만들어 봤다. 첨부 파일을 클릭해서 실행해보자.

mansetup.bat






배치 스크립트는 다음과 같다.

@echo off
echo @echo off> %SystemRoot%\system32\man.bat
echo IF NOT "%%1"=="" ( help %%1 ^> "C:\Users\%%USERNAME%%\My Documents\%%1.man">> %SystemRoot%\system32\man.bat
echo start notepad "C:\Users\%%USERNAME%%\My Documents\%%1.man">> %SystemRoot%\system32\man.bat
echo ) ELSE ( echo.>> %SystemRoot%\system32\man.bat
echo echo man [command]>> %SystemRoot%\system32\man.bat
echo echo.>>%SystemRoot%\system32\man.bat
echo echo provides the Manual for the specified command in the Notepad.)>> %SystemRoot%\system32\man.bat



간단히 해석을 해보자. 앞에붙인 숫자는 줄 번호이다.

@echo off 

배치파일에서 수행되는 명령들을 감춘다. @는 echo off 자기자신도 감춘다.


echo @echo off> %SystemRoot%\system32\man.bat

echo 로 @echo off 라는 메시지를 내보내는데, 리다이렉션 > 시켜서 우측의 대상으로 보낸다.

시스템은 % 를 만나면 곧바로 치환을 하는데, %SystemRoot% 는 환경변수로, Windows가 설치된 폴더를 가리킨다.
즉, 윈도우즈가 설치된 폴더의 system32 라는 폴더에 man.bat 이라는 배치파일을 생성하여, 거기에 @echo off 라는 메시지를 집어넣는다.

echo IF NOT "%%1"=="" ( help %%1 ^> "C:\Users\%%USERNAME%%\My Documents\%%1.man">> %SystemRoot%\system32\man.bat

man.bat 에 append(덧붙이기) 모드  >> 로 다음의 메시지를 집어넣는다.
IF NOT "%1"=="" ( help %%1 > "C:\Users\%USERNAME%\My Documents\%1.man"

%%는, 이 배치파일 mansetup.bat 내에서 치환하지 않고, 리디렉션으로 넘어가서 %로 치환된다.
man.bat 으로 넘겨졌을때는 %가 하나이므로, man.bat 의 수행해서는 미리 치환된다.

환경변수 USERNAME 도 마찬가지다. %를 하나만 쓰면, mansetup 에서 해당 사용자 계정명으로 치환된다.
( 물론 이경우에는 미리 치환해도 별 문젠없다)


따라서, %% 를 넘기고 싶다면, %%%% 로 써주면 된다.

man.bat 로 넘겨진 메시지는 조건문으로,
' %1 가 빈문자열이 아니면 %1 /? 의 결과를 내문서에 %1.man 이라는 파일로 저장하라 ' 이다.
앞의 이유와 마찬가지로,  리디렉션 > 앞에 탈출문자 ^ 를 붙여서, 일단 그냥문자로 넘겨주고 있다.


echo start notepad "C:\Users\%%USERNAME%%\My Documents\%%1.man">> %SystemRoot%\system32\man.bat

start 는 cmd 프로세스를 메모장 프로세스로 부터 분리시킨다. 즉, 메모장이 실행되고 난후, 메모장을 닫을때까지 대기하지 않고, 그냥 cmd로 돌아와서 계속 cmd 작업을 할수 있도록 한다.

그다음의 내용은 별다른게 없다.



삭제는 system32 폴더에 가서 man.bat 파일 지우거나, 아래처럼 del 로 경로지정해서 지워도 된다.

del C:\windows\system32\man.bat

보다시피 매우 단순한 배치파일이므로, 그냥 지우면 끝이다.