私のバッチファイルは、Cプログラムで実行されているが、私はバッチファイルターボC&バッチファイル
でスタートnotepad.exeをを使用したとき、私はindividully私のバッチファイルを実行すると、それはperfect.Whatの
を働く悪いコマンドを.But示し理由は?
私のバッチファイルは、Cプログラムで実行されているが、私はバッチファイルターボC&バッチファイル
でスタートnotepad.exeをを使用したとき、私はindividully私のバッチファイルを実行すると、それはperfect.Whatの
を働く悪いコマンドを.But示し理由は?
batファイルを投稿してください。 notepad.exeへのパスは、手動で実行するときにbatファイルを実行している場所からの相対パスである可能性がありますが、Cアプリケーションから呼び出すときにはC実行可能ファイルの場所から実行しているため、 notepad.exeまたはあなたがnotepad.exeに渡している可能性があります
あなたがnotepad.exeのパスと関係している必要があります。もしあなたがWindows上にいる場合は、notepad.exeのパスを環境に追加してみてください変数 "PATH"は、多くのことを単純化するかもしれません。
あなたは、Cプログラムからバッチファイルを実行すると言います。バッチファイルの実行を開始するときに、環境が適切に設定されていることを確認してください。
バッチファイルの実行時にPATH環境変数が正しく設定されていないと、バッチファイルは実行されません。この場合、環境が正しく設定されているため、バッチファイルはコマンドラインから起動しても問題なく動作します。
start
はcmd.exe
の内部コマンドです。プログラム自体ではありません。 start
を実行するには、cmd.exe
を実行し、cmd.exe
をstart
にする必要があります。
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;
}
は、バッチファイルを起動するコードを投稿することができます「内側」にする必要があり、「動作しない」それ自体でと
start
-exec*
機能は、シェルをロードしません。お願いします ? –バッチファイルのコードを表示できますか? –