2011-09-08 35 views
0

我的批处理文件与C程序执行,但是当我开始使用中的notepad.exe批处理文件涡轮C&批处理文件

它显示了错误的命令。但是当我执行我的批处理文件individully它工作棒极的

的原因是什么?

+0

您可以发布其推出的批处理文件的代码,:本身“不工作”和start -

exec*功能不加载外壳请 ? –

+1

你可以显示批处理文件的代码吗? –

回答

0

请问您可以发布您的bat文件吗?这可能是notepad.exe的路径与手动执行它时运行bat文件的位置有关,但是当您从C应用程序调用它时,将从C可执行文件的位置运行它,以便它不再找到NOTEPAD.EXE或者你可能会传递到FIEL NOTEPAD.EXE

0

它必须与您的notepad.exe的路径做,如果你是在Windows上,然后尝试添加的notepad.exe的路径环境变量“路径”,这可能会简化很多事情。

0

你说你从C程序执行批处理文件。你确定当你开始执行批处理文件时,环境是否正确设置?

如果在执行批处理文件时没有正确设置PATH环境变量,那么批处理文件将不会执行。但是从命令行启动时批处理文件可以正常工作,因为在这种情况下环境已正确设置。

0

startcmd.exe的内部命令;它本身不是一个程序。要运行start,您需要运行cmd.exe并让cmd.exe执行start的事情。

system() C函数执行一个shell(在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; 
}