빈칸 처리하기

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을 그냥 실행시키기만 하면 안되고, 그 뒤에 스크립트 파일을 열도록 해야 한다. 그 스크립트 파일의 경로 또한 빈칸이 들어가 있고, 따라서 똑같은 에러가 발생한다 -_-;

그래서. 홧김에 빈칸이 절대 들어가지 않아도 되도록 상대 경로로 지정해 버렸다.

이해 되는 분만 웃으시면 됩니다. -_-;

코멘트

“빈칸 처리하기”에 대한 7개 응답

  1. 
                 구차니
                 아바타

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

  2. 
                  snowall
                  아바타

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

  3. 
                 goldenbug
                 아바타

    전 우리 말글에서 띄어쓰기가 너무 어려워요….

    그동안 주욱 정리해서 총 6 개의 글을 썼고, 앞으로 하나를 더 쓰면 일단 띄어쓰기에 대한 건 대충 마무리가 될 것 같은데, 이게 다가 아니지만, 이정도면 대충대충 많이 틀리는 것은 해결될 것 같아요.

    근데 콘솔의 띄어쓰기 많큼이나 역시나 어렵네요. ^^;;;

  4. 
                  snowall
                  아바타

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

    글 써볼게요

  5. 
                  snowall
                  아바타

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

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

  6. 
                Lex
                아바타
    Lex

    요즘, 선형대수 공부를 재개하였는데, Dual space라는 개념에서 꽉 막혀서 진전이 없습니다. ㅡㅡ;

    시간되시면 포스팅 좀 부탁드려도 될까요? ^^;

  7. 
                Lex
                아바타
    Lex

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

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.