hyeonk lab

블로그 이미지

hyeonk

hello world! hyeonk lab.

Windows 7에 포함된 CMD 명령어

윈도우 일반 2014. 1. 8. 17:01

Windows 7 CMD창에 남아있는 도스관련 명령어 모음

 

 명령어 모음들을 모아본것이다. CMD창에 나가서 굳이 실행해야할 필요성이 있을까? 마우스 사용만을 고집한다면 필요 없을수 있겠지만, GUI환경으로 바뀌었다. 해도 이런 명령어들이  필요할때가 의외로 많을때가 있다.  인공지능적인 작업이 아닌 수작업을 통해서 뭔가를 복구해야 할 상황이 생길수도 있다라는 것이다. Windows 7에서 CMD창은 어떤 단축키에 의해서 호출된다기 보다는 CMD를 실행하거나, 아이콘을 선택하는 형태이므로 리눅스의 터미널 환경과 흡사해 보인다. 리눅스는 필요에 의해서 아예 그래픽모드를 벗어날수 있는 콘솔환경이 이 존재 하는데, 그래픽환경이 파괴되어 실행이 않될때, 기본모드인 콘솔형태로 부팅이된다. 하지만 Windows 7에서는 이런 기본모드 자체의 분리가 사실상은 불가능하다. 부팅시 기본모드로 부팅을 해도, GUI환경이 포함되어져 있다.

 

 운영체제가 그래픽환경으로 바뀌면서 추가되어진 명령어는 TASKLIST,TASKKILL,DRIVERQUERY..등이다. DiskCopy명령어는 전통적으로 DOS에서 부터 있던 명령어로 현재에 와서는 시스템에 플로피드라이버의 환경을 점차적으로 지원하고 있지 않으므로 거의 쓸일이 없을수도 있다. 디스켓의 복사본을 만들때 필요한 것인데, 현재는 디스켓의 구매도 쉽지가 않다. 폴더를 생성할때,마우스 우축버튼을 이용해 만드는데, MKDIR을 통해 새로운 폴더를 원하는 위치에 만들수가 있다. 만들어진 폴더를 삭제한다면 RD명령어를 사용하면 된다.

 

 CD는 원하는 폴더로 이동을 할때 사용하는데, 하위폴더까지 이동시 불편할수 있다. 이것을 대신할수 있는것이 일괄처리할수 있는 배치파일일 것이다. 그래픽 환경에서 할수있는 대부분의 상황을 이곳에서도 할수 있다고 보면된다. 각각의 명령어들은 보다 세부적으로 사용하려 할때,인자를 포함하여 적절히 이용하면된다.

 

 SET 명령어는 환경변수등을 알고자 할때 이용한다.

C:\>set path
Path=C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;
C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Common Files\Ulead Systems\MPEG;C:\Program Files (x86)\Qu
ickTime\QTSystem\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

C:\>

 

 

 MORE는 단독적으로 실행되어 지지않고, 다른명령어에 하나의 인자처럼 사용한다. 램에 로드된 데몬들을 보고자 한다면 TASKLIST를 이용하면 되지만 한화면이상을 넘어가면 일일이 확인하기 힘들다.

 

 tasklist |more 혹은 tasklist /p

 

 COPY라는 명령어는  리눅스에서는  CP와 같은 역활을 하며 원하는 지점에서 원하는 목적지로 파일을 복사할수가 있다.

복사를 할때 *는 상당히 유용히 사용할수가 있다.

 

copy *.exe d:\

 

    .

    .

 

 이런류의 명령어들은 외부에 실행파일로 있는것이 아니라 커널자체에 내부적으로 포함되어서 실행되어 지는것이므로 부팅하고 파괴된 그래픽환경을 복구하거나,싱글모드로 진입하여 거의 원시적인 작업을 할때 유효적절하다고 볼수 있다.

 

 

 

ASSOC    파일 확장명 연결을 보여주거나 수정한다.
ATTRIB   파일 속성을 표시하거나 바꾼다.
BREAK    확장된 CTRL+C 검사를 설정하거나 지운다.
BCDEDIT        부팅 로딩을 제어하기 위해 부팅 데이터베이스에서 속성을 설정한다.
CACLS    파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정한다.
CALL     한 일괄 프로그램에서 다른 일괄 프로그램을 호출한다.
CD       현재 디렉터리 이름을 보여주거나 바꾼다.
CHCP     활성화된 코드 페이지의 번호를 표시하거나 설정한다.
CHDIR    현재 디렉터리 이름을 보여주거나 바꾼다.
CHKDSK   디스크를 검사하고 상태 보고서를 표시한다.
CHKNTFS  부팅하는 동안 디스크 확인을 화면에 표시하거나 변경한다.
CLS      화면을 지운다.
CMD      Windows 명령 인터프리터의 새 인스턴스를 시작한다.
COLOR    콘솔의 기본색과 배경색을 설정한다.
COMP     두 개 또는 여러 개의 파일을 비교한다.
COMPACT  NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경한다.
CONVERT  FAT 볼륨을 NTFS로 변환합니다. 현재 드라이브 변환할 수 없다.
COPY     하나 이상의 파일을 다른 위치로 복사한다.
DATE     날짜를 보여주거나 설정한다.
DEL      하나 이상의 파일을 지운다.
DIR      디렉터리에 있는 파일과 하위 디렉터리 목록을 보여준다.
DISKCOMP 두 플로피 디스크의 내용을 비교한다.
DISKCOPY 플로피 디스크의 내용을 다른 플로피 디스크로 복사한다.
DISKPART 디스크 파티션 속성을 표시하거나 구성한다.
DOSKEY   명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만든다.
DRIVERQUERY  현재 장치 드라이버 상태와 속성을 표시한다.
ECHO     메시지를 표시하거나 ECHO를 사용 또는 사용하지 않는다.
ENDLOCAL 배치 파일에서 환경 변경의 지역화를 끝낸다.
ERASE    하나 이상의 파일을 지운다.
EXIT     CMD.EXE 프로그램(명령 인터프리터)을 마친다.
FC       두 파일 또는 파일의 집합을 비교하여 다른 점을 표시한다.
FIND     파일에서 텍스트 문자열을 찾는다.
FINDSTR  파일에서 문자열을 찾는다.
FOR      파일 집합에서 각 파일에 대해 지정된 명령을 실행한다.
FORMAT   Windows에서 사용할 디스크를 포맷한다.
FSUTIL   파일 시스템 속성을 표시하거나 구성한다.
FTYPE    파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정한다.
GOTO     Windows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진 줄로 이동한다.
GPRESULT 컴퓨터 또는 사용자에 대한 그룹 정책 정보를 표시한다.
GRAFTABL Windows가 그래픽 모드에서 확장 문자 세트를 표시할수 있게 한다.
HELP     Windows 명령어에 관한 도움말을 제공한다.
ICACLS         파일과 디렉터리에 대한 ACL을 표시, 수정, 백업 또는복원한다.
IF       일괄 프로그램에서 조건 처리를 수행한다.
LABEL    디스크의 볼륨 이름을 만들거나, 바꾸거나, 지운다.
MD       디렉터리를 만든다.
MKDIR    디렉터리를 만든다.
MKLINK         기호화된 링크와 하드 링크를 만든다.
MODE     시스템 장치를 구성한다.
MORE     출력을 한번에 한 화면씩 표시한다.
MOVE     하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮긴다.
OPENFILES  파일 공유에서 원격 사용자에 의해 열린 파일을 표시한다.
PATH     실행 파일의 찾기 경로를 보여주거나 설정한다.
PAUSE    배치 파일의 처리를 보류하고 메시지를 보여준다.
POPD     PUSHD 명령으로 저장된 디렉터리로 바꾼다.
PRINT    텍스트 파일을 인쇄한다.
PROMPT   Windows 명령 프롬프트를 바꾼다.
PUSHD    현재 디렉터리를 저장한 후 디렉터리를 바꾼다.
RD       디렉터리를 지운다.
RECOVER  불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구한다.
REM      배치 파일 또는 CONFIG.SYS에서 주석을 기록한다.
REN      파일 이름을 바꾼다.
RENAME   파일 이름을 바꾼다.
REPLACE  파일을 대체한다.
RMDIR    디렉터리를 지운다.
ROBOCOPY       파일과 디렉터리 트리를 복사할 수 있는 고급 유틸리티이다.
SET      Windows 환경 변수를 보여주거나, 설정하거나, 지운다.
SETLOCAL 배치 파일에서 환경 변경의 지역화를 시작한다.
SC       서비스를 표시하거나 구성한다(백그라운드 작업).
SCHTASKS 컴퓨터에서 실행할 명령과 프로그램을 예약한다.
SHIFT    배치 파일에서 바꿀 수 있는 매개 변수의 위치를 바꾼다.
SHUTDOWN 컴퓨터의 로컬 또는 원격 종료를 허용한다.
SORT     입력을 정렬한다.
START    지정된 프로그램이나 명령을 별도의 창에서 시작한다.
SUBST    경로를 드라이브 문자로 지정한다.
SYSTEMINFO  특정 컴퓨터의 속성과 구성을 표시한다.
TASKLIST 서비스를 포함한 실행 중인 모든 작업을 표시한다.
TASKKILL 실행 중인 프로세스나 응용 프로그램을 중지한다.
TIME     시스템 시간을 보여주거나 설정한다.
TITLE    CMD.EXE 세션에 대한 창의 창 제목을 설정한다.
TREE     드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시함.
TYPE     텍스트 파일의 내용을 보여준다.
VER      Windows 버전을 보여준다.
VERIFY   파일이 디스크에 올바로 쓰였는지 검증할지 여부를 지정한다.
VOL      디스크 볼륨 이름과 일련 번호를 보여준다.
XCOPY    파일과 디렉터리 트리를 복사한다.
WMIC     대화형 명령 셸 내의 WMI 정보를 표시한다.


출처: http://blog.naver.com/hwang_jt/130132351399


저작자표시 (새창열림)

'윈도우 일반' 카테고리의 다른 글

배치파일 기초 작성법  (0) 2014.01.08
Posted by hyeonk

[MFC] SendMessage

mfc & winAPI 2014. 1. 7. 16:28

클래스간 데이터 전달을 하는 방법이 무엇이 있을까.


1. 전역변수
2. 헤더 include 후 변수 접근
3. SendMessage

SendMessage를 이용하면 클래스간 데이터 전달이 용이함을 알고, 사용해보았다(몇번의 삽질과 함께...)

?
1
2
3
4
5
6
7
8
9
10
11
12
LRESULT SendMessage(
    UINT message,
    WPARAM wParam = 0,
    LPARAM lParam = 0
) throw();
 
static LRESULT SendMessage(
    HWND hWnd, 
    UINT message,       // 메시지 이름
    WPARAM wParam,  // 정수형 포인터 전달인자
    LPARAM lParam       // 실수형 포인터 전달인자
) throw();

주로 static을 쓰게 될텐데...

선언해주어야 하는 파트는 3파트.

1. 메시지 등록
- '이런 메시지를 쓰겠습니다.' 하는 부분 
        - 메시지 등록은 이 메시지를 받을 곳 메시지 맵에 등록을 한다. 던져줬는데 받는놈이 뭔지 모르면 그건 스팸일테니... 매시지 맵의 역할에 대해서는 따로 공부..
 
        ex) BEGIN_MESSAGE_MAP(CsendMessageDlg, CDialog)
ON_MESSAGE(메시지 구별자, 처리함수)
      END_MESSAGE_MAP()
 
2. 처리함수 정의
- 위의 처리함수를 정의하는 부분.
 
3. 메시지 전달
- 메시지를 전달하는 부분
ex) ::SendMessage(전달 받을 곳의 핸들(받는사람) , 메시지 구별자, 전달인자1, 전달인자2);
 


흐름

SendMessage - 받는 핸들 찾음 - 처리 함수 호출



#sendMessageDlg.cpp // 부모 Dialog
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BEGIN_MESSAGE_MAP(CsendMessageDlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    //}}AFX_MSG_MAP
    ON_BN_CLICKED(IDOK, &CsendMessageDlg::OnBnClickedOk)
    ON_BN_CLICKED(IDC_BUTTON1, &CsendMessageDlg::OnBnClickedButton1)
    ON_MESSAGE(UM_TEST_SENDMESSAGE, &CsendMessageDlg::sets) // 1. 메시지 등록
END_MESSAGE_MAP()
 
LRESULT CsendMessageDlg::sets(WPARAM wParam, LPARAM lParam) // 2. 처리함수 정의
{
    CString *data = (CString*)lParam;
        // 이렇게 받아옴. 왜냐하면 lParam 은 포인터니까!! CString을 넘긴 주소를 가리키고 있다.
    ::MessageBox(NULL, _T("asdf"), (LPCWSTR)data, MB_OK); // 이건 그냥 확인용
}


#Modaless.h
?
1
#define UM_TEST_SENDMESSAGE WM_USER +1  // 메시지 구별자 등록


#Modaless.cpp
// 자식 Dialog
?
1
2
3
4
5
6
7
8
9
10
11
BOOL CModaless::OnInitDialog()
{
    CDialog::OnInitDialog();
    CString *str = new CString("asdf");
    ::SendMessage(((CSendMessageDlg*)GetParent())->GetSafeHwnd(), UM_TEST_SENDMESSAGE, 0, (LPARAM)str);
        // ((CSendMessageDlg*)GetParent())->GetSafeHwnd() : 상위 Dialog의 핸들을 가져옴
        // 만약 하위 Dialog에게 보내려면 하위 Dialog의 객체에 sendMessage를 던져주면된다.
        // 그땐 주소(hWnd가 필요없다. :D)
    // 3. 메시지 전달
    return TRUE;
}


여기에서 보면 가장 중요한 부분이 SendMessage 부분인것 같다.

첫번째 전달인자는 받을 클래스의 핸들러가 들어간다. 즉, 받는사람 주소인 셈.
나는 부모 다이얼로그에 전달하기위해서 getparent를 이용해서 핸들러를 받아왔다.

전달인자는 WPARAM 과 LPARAM.
둘다 dword 형으로
WPARAM은 UINT, LPARAM은 LONG 형으로 각각 정수형, 실수형 포인터이다.

끗.

PS. 위 내용은 단순히 라이브러리를 어떻게 쓰는지에 대한 방법을 적은 것이다.
후에 꼭, SendMessage와 PostMessage에 대한 이해를 하는것이 중요하다.

라이브러리를 쓰는 개발자보다는 라이브러리를 만들 수 있는 개발자가 되자.

출처: http://hatti.tistory.com/entry/MFC-SendMessage

저작자표시 (새창열림)

'mfc & winAPI' 카테고리의 다른 글

BOOL PreTranslateMessage(MSG* pMsg)  (0) 2014.03.21
분할 윈도우 중 하나에 접근하는 방법  (0) 2014.02.10
어플리케이션(MFC)에서 스레드 사용 및 주의사항 (필독!!)  (0) 2014.01.07
[MFC] MFC 팁 모음  (0) 2013.06.28
Win32Api에서 x64(64비트) Application을 개발할때의 주의점들  (0) 2013.04.15
Posted by hyeonk

어플리케이션(MFC)에서 스레드 사용 및 주의사항 (필독!!)

mfc & winAPI 2014. 1. 7. 16:26

1. 크기(size) 및 효율성(performance)의 이유로 MFC 객체(Object)는 스레드에 안전한 구조가 아니다.

2. MFC 객체에 접근(Access)하기 위해서는 CWinThread 객체를 사용한 스레드여야 한다. (User-Interface Thread, Worker Thread)
  - User-Interface Thread와 Worker Thread의 차이 : User-Interface Thread는 스레드 자체의 메시지 큐를 가지며 일반적으로 UI를 포함한다.

3. 일반적인 규칙으로 MFC 객체는 그것을 생성한 스레드에서만 접근할 수 있다. MFC는 윈도우 핸들과 윈도우 객체를 연결하는 
    맵(Windows Handle Maps)을 가지는데 이것은 스레드의 로컬 영역에 저장되기 때문이다.
  - Worker Thread에서 CDocument의 UpdateAllViews 나 CView의 UpdateWindow 등을 호출해도 뷰는 업데이트 되지 않는다.
  - Worker Thread에서 AfxGetMainWnd 등을 호출하면 NULL이 반환된다.
  - Worker Thread에서 CDialog의 UpdateData 등을 호출하면 ASSERT 에러가 난다.
  - Worker Thread에서 UI를 직접 접근할 경우 Dead lock에 빠질 수 있다.

4. SendMessage와 PostMessage의 차이를알자.
  - SendMessage를 호출하면 윈도우의 메시지 프로시저를 바로 호출해서 결과를 리턴 받는다.
  - PostMessage를 호출하면 메시지가 시스템 메시지 큐에 보내지고 호출한 함수는 바로 리턴이 된다.
    시스템은 해당 윈도우 스레드의 메시지 큐에 메시지를 보내고 메시지가 처리된다.
 - 따라서 Worker Thread에서 SendMessage를 호출하면 Worker Thread에서 메시지 핸들러를 호출하게 되는것이고
    PostMessage를 호출하면 메인 Thread에서 메시지 핸들러를 호출하게 되는것이다.

[MFC 어플리케이션에서 Worker Thread를 사용할 경우 지켜야 할 규칙]
1. UI에 대한 접근은 UI를 생성한 클래스에서만 한다. (Worker Thread에서 UI 접근 함수를 직접 호출하지 않는다.)

2. 메인 스레드와 서브 스레드(Worker Thread)에서 동시에 접근하는 Data는 최대한 줄인다.

3. 서브 스레드(Worker Thread)에서 처리한 작업은 사용자 메시지를 만든 후 PostMessage로 보내서 메인 스레드에서
   처리할 수 있도록 한다.


출처: http://blog.naver.com/ultimidou/130096322389

[출처] 어플리케이션(MFC)에서 스레드 사용 및 주의사항 (필독!!)|작성자 울티미도우


[출처] 어플리케이션(MFC)에서 스레드 사용 및 주의사항 (필독!!)|작성자 울티미도우

저작자표시 (새창열림)

'mfc & winAPI' 카테고리의 다른 글

분할 윈도우 중 하나에 접근하는 방법  (0) 2014.02.10
[MFC] SendMessage  (0) 2014.01.07
[MFC] MFC 팁 모음  (0) 2013.06.28
Win32Api에서 x64(64비트) Application을 개발할때의 주의점들  (0) 2013.04.15
CString 형변환 Programming  (0) 2013.02.13
Posted by hyeonk
이전페이지 다음페이지
블로그 이미지

hello world! hyeonk lab.

by hyeonk

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/12   »
일 월 화 수 목 금 토
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

링크

카테고리

전체 (44)
ios (1)
mfc & winAPI (17)
c & c++ (4)
java (1)
eclipse (1)
visual_studio (2)
javascript (3)
asp (1)
oracle (3)
개발이야기 (5)
윈도우 일반 (2)
etc (2)
reference (2)
personal_reference (0)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
hyeonk's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

hyeonk lab

hello world! hyeonk lab.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 전체 (44)
    • ios (1)
    • mfc & winAPI (17)
    • c & c++ (4)
    • java (1)
    • eclipse (1)
    • visual_studio (2)
    • javascript (3)
    • asp (1)
    • oracle (3)
    • 개발이야기 (5)
    • 윈도우 일반 (2)
    • etc (2)
    • reference (2)
    • personal_reference (0)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바