プロが教えるわが家の防犯対策術!

C言語でコマンドラインのカレントディレクトリを移動するということは可能でしょうか?


ちなみに、
system("cd C:\\");

としてみても、ルートディレクトリに移動したりはしてくれませんでした。

A 回答 (4件)

ひょっとして作ろうとしているプログラムは、それをコマンドプロンプトから実行すると


カレントディレクトリを変更する
(そして実行終了する)。といった動作をするものでしょうか?

だとしたら、それはできません。
    • good
    • 0
この回答へのお礼

直接Cからはできないのですね。
遠回りな手段を考えるにしても、まずはそのような手段以外ないということがわかっていないと、めんどうくさいことは考えることができないものです。

なので、明確に「できない」というお答えがありがたかったです。

本当は、No.3の方の方法でやってみて、できたかどうか報告してから〆ようと思っていたのですが、用事もあり、遅れてすみませんでした。

お礼日時:2006/06/04 17:54

そのプログラム実行中でいいなら、chdir()等で移動することはできますが…


system()は、子プロセスでシェルを立ち上げてコマンドを実行しますが,子プロセスでのカレントディレクトリの変更が親プロセスに引き継がれるか(影響するか)は、OSによるはずです。
が、影響しないOSがほとんどと思います。
純粋なMS-DOS(PC-DOS)は影響したと思いますが、未テストです。
    • good
    • 0
この回答へのお礼

考えていただいて、ありがとうございます。

お礼日時:2006/06/04 18:06

SendMessage 関数を使って、コマンドプロンプトにメッセージを


送り、手で「cd XXX」と入力したときと同じ状態をシミュレート
してやればどうでしょう?
(私もやったことがないので、本当に可能かどうか、わかりま
 せん。)
    • good
    • 0
この回答へのお礼

ありがとうございます。
実は、今朝それをやってみました。
コマンドプロンプトにコマンドが表示されて、ちょっと格好わるいものの、きちんと実行されました。

この方法でいこうと思っていますが、他には、一時的なバッチファイルを作成して、それをプログラムから実行してからファイルを削除するというものも考えていましたが、これは可能かどうかはわかりません。

考えていただいてありがとうございました。

お礼日時:2006/06/04 17:52

そのような機能の関数は標準化されていません。



Win32ならSetCurrentDirectory()
POSIXならchdir()が使えますが。

この回答への補足

SetCurrentDirectory関数では、呼び出し元プロンプトでのディレクトリ表示はかわりませんでした。

やはりバッチファイルレベルでなければプロンプトでのディレクトリ移動は無理なのでしょうか?

補足日時:2006/06/03 21:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!