2011-09-08 7 views
0
내 배치 파일은 C 프로그램으로 실행되지만

나는 배치 파일에서 시작 NOTEPAD.EXE를 사용하는 경우터보 C & 배치 파일

이 보여 내 배치 파일을 실행할 때 individully는 완벽 해의

작동 나누었다 나쁜 명령

이유는 무엇입니까?

+0

당신이 배치 파일을 실행하는 코드를 게시 할 수있는 '내부'할 필요가, "작동하지 않는"자체 및 start -

exec* 함수는 쉘을로드하지 않습니다 제발? –

+1

배치 파일의 코드를 표시 할 수 있습니까? –

답변

0

박쥐 파일을 올리시겠습니까? notepad.exe에 대한 경로는 수동으로 실행할 때 bat 파일을 실행하는 위치에 대한 상대 경로 일 수 있지만 C 응용 프로그램에서 호출 할 때 C 실행 파일의 위치에서 실행하면 더 이상 찾지 못합니다 notepad.exe 또는 notepad.exe로 전달할 수있는 파일명

0

notepad.exe의 경로와 관련이 있어야합니다. Windows에있는 경우 환경에 notepad.exe의 경로를 추가하십시오. 변수 "PATH"는 많은 것을 단순화합니다.

0

당신은 C 프로그램에서 배치 파일을 실행한다고 말합니다. 배치 파일을 실행할 때 환경이 제대로 설정되어 있는지 확인하십시오?

배치 파일을 실행할 때 PATH 환경 변수가 올바르게 설정되지 않으면 배치 파일이 실행되지 않습니다. 이 경우에는 환경이 올바르게 설정 되었기 때문에 배치 파일은 명령 줄에서 시작할 때 문제없이 작동합니다.

0

startcmd.exe의 내부 명령입니다. 그것은 프로그램 자체가 아닙니다. start을 실행하려면 cmd.exe을 실행하고 cmd.exestart 할 필요가 있습니다.

system() C 함수는 쉘을 실행하고 (Windows에서는 cmd.exe 일 수 있음) 인수를 해당 쉘에 전달하고 start "작동"합니다. 그것은 cmd.exe

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main(void) { 
    // system "works" 
    system("start C:\\tmp"); 

    // this don't work 
    execl("start", "start", "C:\\Windows", (char*)0); 
    printf("Oops: execl with start failed\n"); 

    // this "works" 
    execl("C:\\Windows\\System32\\cmd.exe", "start", "/c", "start", "C:\\Windows\\", (char*)0); 
    printf("Oops: execl with <path>\\cmd.exe failed\n"); 

    return 0; 
}