2011-09-08 51 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; 
}