2011-09-08 6 views
0

私のバッチファイルは、Cプログラムで実行されているが、私はバッチファイルターボC&バッチファイル

でスタートnotepad.exeをを使用したとき、私はindividully私のバッチファイルを実行すると、それはperfect.Whatの

を働く悪いコマンドを.But示し

理由は?

+0

は、バッチファイルを起動するコードを投稿することができます「内側」にする必要があり、「動作しない」それ自体でとstart -

exec*機能は、シェルをロードしません。お願いします ? –

+1

バッチファイルのコードを表示できますか? –

答えて

0

batファイルを投稿してください。 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; 
} 
関連する問題