質問です。
プログラム中に、DOSコマンドを使用して、その引数を受け取りたいのですが、
どうしたら実現できるでしょうか?
具体的には、CDを実行して、カレントディレクトリを得たいのですが。
popen等調べたのですが、unix系OSに限られる用でできませんでした。
環境は、Visual Studio .NET C++ 、Windows XP です。
よろしくお願いします。
system("cd");
> 具体的には、CDを実行して、カレントディレクトリを得たいのですが。
同様のWinAPIで代用するのはどうでしょうか?
GetCurrentDirectory 現在のプロセスのカレントディレクトリを取得します。
SetCurrentDirectory カレントディレクトリを設定します。
システム関数
MSDN ディレクトリ制御
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_crt_directory_control.asp
> popen等調べたのですが、unix系OSに限られる用でできませんでした。
CreatProcessでDOSコマンドを起動して、CreatePipeで〜
みたいなこともできます。
(ただしめんどい)
返信ありがとうございます。
>>RiSKさん
system関数ですと、コマンドの結果が標準出力されるので、
結果を使うことができないと思うのですけど、どうでしょうか?
>>Blueさん
なるほど、ありがとうございます。APIを使うのは考えなかったです。
勉強になります。
ですが、今後の為にプログラム内でDOSコマンドをうまく使うやり方を
知りたいと思っています。何かご存知ないでしょうか?
よろしくお願いします。
popenとかはいかがでしょ。
> 今後の為にプログラム内でDOSコマンドをうまく使うやり方
「CreatePipe CreateProcess」をキーワードにしてGoogle検索してみてください。
一時ファイルを使ってよいのならば、パイプでやるよりもやや簡単になります。
というか、
MSDN
http://www.microsoft.com/japan/developer/library/vccore/_crt__popen.2c_._wpopen.htm
に _popen 関数の説明がありますがそれは読まれましたか?
Web検索する前にMSDN(Help)を使いましょう。
>system関数ですと、コマンドの結果が標準出力されるので、
>結果を使うことができないと思うのですけど、どうでしょうか?
つ[パイプ]
>>επιστημηさん、Blueさん
popen関数は使えないかと思っていたのですが、_popen関数があるのですね。
MSDNで探すのすっかり忘れてました。すいません。
>>リスクさん
パイプを使うと、何かうまい方法があるかもしれないですね。
ちょっと僕は思いつかなかったですがw
余談ですが、今プログラム環境がないので、明日実際に確かめてから、
解決にチェックさせてもらいます。
みなさんありがとうございました。
無事解決しました。ありがとうございました。
ツイート | ![]() |