C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[74779] Re:Re:Re:Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ
뽀뽀중 [kissjung] 3742 읽음    2018-01-22 22:37
빌더(TWx) 님이 쓰신 글 :
: 뽀뽀중 님이 쓰신 글 :
: : 답변 감사 드립니다.
: :
: : 폴더에 공백이 있을 경우 따옴표로 감싸면 실행파일 경로에 공백이 있을 경우도 도스 프로그램이 실행되는 것을 검색을 통해 알게 되었습니다.
: :
: : 이부분도 테스트를 해 보았습니다만,,,  입력파일 경로에 공백이 있는 경우 "" 로 감싼 경우도 에러가 발생 했습니다.
: : 이 부분도 제 질문글에 설명을 하였습니다.
: :
: : 도스에서 직접 몇몇 경우에 대해 테스트를 했는데,,,
: : 실행할경우는 ""로 감싼 경우는 경로에 공백이 있어도 실행이 되었습니다.
: : 다만, 입력파일 경로는 공백이 있을 경우 "" 로 감싸도 에러가 발생하였습니다.
: :
: : 아마도 도스 프로그램이 포트란으로  1998년경  제작된 프로그램이라 입력자료 경로에 공백이 있을경우 공백을 무시하는 것 같습니다.
: : 즉, 오류 수정이 불가능할것 같아... 입력파일 경로에 공백이 있으면, 경고 메세지를 보여 주는 것으로 변경 하였습니다.
: :
: : 프로그래밍을 누군가에게 배워본적 없이 인터넷 검색만으로 해결하다 보니,
: : 기초가 많이 부족 합니다. 많은 이해 부탁 드립니다.
: :
: : 답변이 많은 도움이 되고 있습니다. 감사 합니다.
:
:
: 답변:
:
:
:
: wchar_t *cmdLine = L"\"C:\\Some Directory\\Test.exe\"";
: 

:
:
: 위와 같이 패스 경로에 공백이 있을 경우 쿼테이션 마크를 주므로써 처리가 가능 하죠?
:
: Test.exe 라는 콘솔모드 프로그램이...
:
: int main(int argc, wchar_t **argv)
: {
:     for (int i = 0; i < argc; ++i)
:         printf("%s\n", argv[i]);
:     _gettche();
:     return 0;
: }
:
: 위와 같이 프로그램에 전달된 코맨드 라인 옵션을 프린트 한다고 해 봅시다.
:
: 그리고...
:
: Test.exe 프로그램에...
:
:
: "C:\\User Dir"
: 

:
: 와 같이 공백이 들어있는 패스경로를 커맨드라인 옵션으로 CreateProcess() API를 이용해서 전달 하려면...
: 마찬가지로 아래와 같이 쿼테이션 마크를 넣어주면 되요.
:
:
: 	wchar_t *cmd = L"\""\"C:\\Some Directory\\Test.exe\\" \"C:\\User Dir\"";
: 	STARTUPINFO si = { sizeof(si), 0};
: 	PROCESS_INFORMATION pi = {};
: 	bool b = CreateProcess(0, cmd, 0, 0, false, 0, 0, 0, &si, &pi);
: 	CloseHandle(pi.hProcess);
: 	CloseHandle(pi.hThread);
: 
: 

:
: Test.exe 콘솔모드 프로그램은
: argv 첫번째 인수로 Test.exe 프로그램의 full-path 를 프린트 할 것이고
: 두번째 파라미터로 공백이 포함된 커맨드 라인 옵션을 하나의 옵션으로 인식해서 'C:\User Dir' 를 프린트 할 것임.
:
: 콘솔모드 프로그램이냐 아니냐의 차이 때문이 아님.


도스에서 직접 프로그램을 실행 시켰 보았습니다.

**************
D:\>hec1.exe "D:\새 폴더 (2)\00020120.hec"

UNABLE TO OPEN INPUT FILE ===>D:\새폴더(2)\00020120.hec                                              
PROGRAM ABORTED
Stop - Program terminated.


D:\>
**************

결과는 위와 같습니다.
공백이 포함된 폴더에 데이터 파일을 넣었고, 실행 파일은 D 드라이브에 위치 합니다.

"D:\새 폴더 (2)\00020120.hec" 라는 폴더 경로가 프로그램에서는 공백이 없는 D:\새폴더(2)\00020120.hec 로 인식을 한것 같습니다.

이는 프로그램 자체에서 공백을 인식 못하는 것으로 생각 하고 있는데, 제 생각이 틀린것인가요?

(도스프로그램 및 입력자료는 첨부 하였습니다.)

+ -

관련 글 리스트
74747 콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 뽀뽀중 3502 2018/01/17
74754     Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 빌더(TWx) 3269 2018/01/22
74758         Re:Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 뽀뽀중 3484 2018/01/22
74775             Re:Re:Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 빌더(TWx) 3423 2018/01/22
74779                 Re:Re:Re:Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 뽀뽀중 3742 2018/01/22
74782                     Re:Re:Re:Re:Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 빌더(TWx) 3416 2018/01/23
74784                         감사 합니다. 뽀뽀중 3289 2018/01/23
74780                     Re:Re:Re:Re:Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 오랑캐꽃 3898 2018/01/22
74783                         감사 합니다. 뽀뽀중 3548 2018/01/23
74751     Re:콘솔(도스)프로그램실행할때 경로에 공백이 있으면 실행이 안됩니다. ㅠㅠ 초보심재민 3370 2018/01/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.