VB2005에서 개발하다보면 황당한 상황들이 자주 발생한다. 이건 언어의 정의와 운영체제의 문제가 결합되서 만들어진 건데...

내가 하고싶은건 cmd.exe를 실행시켜서 그 뒤에 명령을 붙이는 것이다.

명령의 형태는

strCmd = My.Application.Info.DirectoryPath & "\gnuplot\binary\gnuplot.exe"

문자열로 주어져 있는 이 명령을 실행시키면 된다. 그래서 실행시켜봤더니 안된다.
왜 안되는가 살펴봤더니 My.Application.Info.DirectoryPath에서 반환하는 이름에 공백이 들어가 있다. 그리고 cmd.exe는 공백은 모두 매개변수의 구분자로 생각하기 때문에 없는 명령이라면서 실행되지 않는다.

해법1. 실행시키고 싶은 명령어가 있는 디렉토리의 경로에서 빈칸이 없도록 잘 조정한다.
그런데 이렇게 하면 임의의 디렉토리에 있는 것을 실행시킬 수 없다. 따라서 앞으로 Program Files에 들어갈 이 프로그램의 작동이 보증이 안된다. 왜 MS에서는 Program과 Files 사이에 빈칸을 넣은 걸까? 개발자 삽질하라고? -_-;

해법1을 기각하고 해법2를 찾는 중이다.
해법2. 그래서 경로명의 앞/뒤에 강제로 "를 넣도록 해 봤다. 경로명 전체가 "로 둘러싸여서 안된다. 가령
D:\Visual studio 2005\binary
이런 경로명이 있다고 할 때
"D:\Visual studio 2005\binary"
이렇게 하면 뭔가 된다.
암튼 해결.

----
그 뒷이야기
gnuplot을 그냥 실행시키기만 하면 안되고, 그 뒤에 스크립트 파일을 열도록 해야 한다. 그 스크립트 파일의 경로 또한 빈칸이 들어가 있고, 따라서 똑같은 에러가 발생한다 -_-;
그래서. 홧김에 빈칸이 절대 들어가지 않아도 되도록 상대 경로로 지정해 버렸다.
이해 되는 분만 웃으시면 됩니다. -_-;

by snowall 2010.09.07 14:51
  • Lex 2010.09.07 20:41 ADDR EDIT/DEL REPLY

    일반적으로 command line에서 빈칸이 기본적인 구분자로 통용되었는데, 윈도우즈로 넘어와서 빈칸을 Stiring의 일부로서 허용함에 따라 큰 따옴표를 추가적인 구분자로 지정하였습니다.

    • snowall 2010.09.07 21:33 신고 EDIT/DEL

      네...문제는 큰 따옴표가 VB에서는 특수문자라는 것이죠. -_-

      어쨌든 이 문제는 해결하긴 했는데, 그 다음 문제가 또 나타나서 삽질이네요

  • Lex 2010.09.07 20:42 ADDR EDIT/DEL REPLY

    요즘, 선형대수 공부를 재개하였는데, Dual space라는 개념에서 꽉 막혀서 진전이 없습니다. ㅡㅡ;
    시간되시면 포스팅 좀 부탁드려도 될까요? ^^;

    • snowall 2010.09.07 21:34 신고 EDIT/DEL

      음...그거 별거 없는데요 -_-;

      글 써볼게요

  • goldenbug 2010.09.08 11:47 ADDR EDIT/DEL REPLY

    전 우리 말글에서 띄어쓰기가 너무 어려워요....
    그동안 주욱 정리해서 총 6 개의 글을 썼고, 앞으로 하나를 더 쓰면 일단 띄어쓰기에 대한 건 대충 마무리가 될 것 같은데, 이게 다가 아니지만, 이정도면 대충대충 많이 틀리는 것은 해결될 것 같아요.
    근데 콘솔의 띄어쓰기 많큼이나 역시나 어렵네요. ^^;;;

    • snowall 2010.09.08 12:30 신고 EDIT/DEL

      MS에서 쓸데없는걸 넣는 바람에 삽질만 하고 있네요

  • 구차니 2010.09.10 23:18 신고 ADDR EDIT/DEL REPLY

    exec() 로 리눅스에서 실행할때도 공백이 들어가면 참.. 오묘해지더라구요 ㅠ.ㅠ