プログラム中にDOSコマンドを使うには?

解決


あっし  2006-01-12 10:11:18  No: 60261

質問です。
プログラム中に、DOSコマンドを使用して、その引数を受け取りたいのですが、
どうしたら実現できるでしょうか?

具体的には、CDを実行して、カレントディレクトリを得たいのですが。

popen等調べたのですが、unix系OSに限られる用でできませんでした。

環境は、Visual Studio .NET C++ 、Windows XP  です。
よろしくお願いします。


RiSK  2006-01-12 10:17:54  No: 60262

system("cd");


Blue  2006-01-12 10:19:50  No: 60263

> 具体的には、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で〜
みたいなこともできます。
(ただしめんどい)


あっし  2006-01-12 12:09:01  No: 60264

返信ありがとうございます。

>>RiSKさん
system関数ですと、コマンドの結果が標準出力されるので、
結果を使うことができないと思うのですけど、どうでしょうか?

>>Blueさん
なるほど、ありがとうございます。APIを使うのは考えなかったです。
勉強になります。
ですが、今後の為にプログラム内でDOSコマンドをうまく使うやり方を
知りたいと思っています。何かご存知ないでしょうか?

よろしくお願いします。


επιστημη  2006-01-12 14:37:24  No: 60265

popenとかはいかがでしょ。


Blue  2006-01-12 18:07:43  No: 60266

> 今後の為にプログラム内でDOSコマンドをうまく使うやり方
「CreatePipe CreateProcess」をキーワードにしてGoogle検索してみてください。

一時ファイルを使ってよいのならば、パイプでやるよりもやや簡単になります。

というか、
MSDN
http://www.microsoft.com/japan/developer/library/vccore/_crt__popen.2c_._wpopen.htm
に _popen 関数の説明がありますがそれは読まれましたか?
Web検索する前にMSDN(Help)を使いましょう。


リスク  2006-01-12 18:28:24  No: 60267

>system関数ですと、コマンドの結果が標準出力されるので、
>結果を使うことができないと思うのですけど、どうでしょうか?

つ[パイプ]


あっし  2006-01-13 08:50:19  No: 60268

>>επιστημηさん、Blueさん
popen関数は使えないかと思っていたのですが、_popen関数があるのですね。
MSDNで探すのすっかり忘れてました。すいません。

>>リスクさん
パイプを使うと、何かうまい方法があるかもしれないですね。
ちょっと僕は思いつかなかったですがw

余談ですが、今プログラム環境がないので、明日実際に確かめてから、
解決にチェックさせてもらいます。
みなさんありがとうございました。


あっし  2006-01-13 23:39:13  No: 60269

無事解決しました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加