2012-05-30 4 views
7

Cプログラムの中からコマンドプロンプトコマンドを実行する必要があるという問題があります。ここで私は、問題は、私は最初のユーザーにCDにしたいし、その後、現在、それは指定されたパスとディレクトリを見つけるカントプログラム出力は親プロセス内で実行されるコマンドのDirを実行しているシステムコマンドを使用してwindows下のcプログラムの中からディレクトリを変更する

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


int main(){ 



system("cd \Users"); 
system("Dir"); 

} 

をやったことありますディレクトリ、すなわち、プログラムソースファイルの場所です。

私がしたい実際のタスクは、Cプログラムの中から特定のディレクトリからJavaファイルを実行したいだけです。そのJavaファイルはC:\ Users \ Abdullah \ proにあります。私のCプログラムの親ディレクトリはC:\ Users \ Cprogです。どうすればいいですか?

+0

を下記の私の答えを見てください。それが役に立たないかどうか、またはMicrosoftからの例を見てもそれ以上の質問があれば教えてください。サイドノート:現在のディレクトリもそのディレクトリに変更する必要が本当に必要ですか? –

+0

あなたの答えをありがとう。問題は、特定のディレクトリで実行する必要のあるプログラムがスクリプトを使用して実行されることです。 e-g cdを作業ディレクトリにコピーし、run.bat -arg1 arg1 -arg2 arg2などと入力します。私はそれを行うためのプロセスを開始できません。/ – Abdullah

+1

それに応じて私の答えが更新されました。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425%28v=vs.85%29.aspxおよび現在のディレクトリパラメータを参照してください。 –

答えて

5

あなたのプログラムには、間違った前提があります。まず、 "cd"と "dir"はプログラムではなく、シェルcmd.exeに組み込まれたコマンドです。第二に、あなたは現在のディレクトリをまったく変更する必要はないと思う。

いずれにせよ、これはWindowsシステムなので、look at an example on how to start a program with CreateProcess()です。

現在のディレクトリを変更するには、CreateProcess()呼び出しのlpCurrentDirectory parameterを確認してください。

5

system()新しいプロセスを開始してください。この新しいプロセスは、の現在のディレクトリであるを変更し、終了します。プログラムのプロセスの現在のディレクトリは変更されません。

あなたはchdir()(または_chdir())が必要です。

+0

また、彼は 'システム'への単一の呼び出しを使用することができます。 'system(" cd \ Users&dir ")'のようなものが動作するかもしれません。 (私は '&'は必要な文字だと思いますが、Unix上では ';'になります) –

+1

...または単に 'system(" Dir \ Users ");' –

+0

何も動いていません: 。私はちょうどCプログラムの中から特定のディレクトリからJavaファイルを実行したい。そのJavaファイルはC:\ Users \ Abdullah \ proにあります。私のCプログラムの親ディレクトリはC:\ Users \ Cprogです。どうすればこのことができるのかアドバイスしてください – Abdullah

0

'cd'は、実行しようとしている別の実行可能ファイルではありません。通常、「cd」はシェル/コマンドの組み込みコマンドです。 'cd'を 'system()'と一緒に実行することはできず、それをあなたのプログラムに応じて動作させることを期待します。プログラム内でディレクトリの変更を行うには、 'chdir()'関数(またはシステムコール)を使用する必要があります。 'chdir()'のマニュアルページを参照してください。

0

これは動作するはずです:

system("dir Users\\whatEverNextFolder > test.txt"); 
関連する問題