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. 9. 7. 14:51