総ありがとう数 累計4,284万(2014年10月25日現在)

毎月4,000万人が利用!Q&Aでみんなで助け合い!

-PR-
708wildcat

こんにちは
今、visualC++でプログラムを作っています。
内容はsystem関数を使ってバッチファイルを呼び出すプログラムなのですが
int main(void){
system(tel.bat);

return 0;
}
バッチファイルの内容は

(1)telnet 192.168.○○○
(2)cd フォルダA
(3)test.exe

です。
作って実行してみると(1)の接続はできました。ですがその次の(2)、(3)は実行されませんでした。
どうしたらできるのでしょうか?できればtelnetで実行できるようにしたいです。
           
   操作側   接続先
OS:windows7、windowsCE

よろしくお願いいたします。
  • 回答数1
  • 気になる数0

Aみんなの回答(全1件)

質問者が選んだベストアンサー

  • 2010-12-14 00:07:58
  • 回答No.1
>バッチファイルの内容は
>(1)telnet 192.168.○○○
>(2)cd フォルダA
>(3)test.exe
>です。
>作って実行してみると(1)の接続はできました。ですがその次の(2)、(3)は実行されませんでした。

telnetコマンドが終了するまで、バッチファイルは次の処理に進みません。
サーバ側から切断させればtelnetコマンドが終了しますので、次の行のcdコマンド、およびtest.exeが『クライアントのローカル環境で』実行されます。
そういうバッチファイルになっています。

希望する動作は、telnetで接続して、サーバ側でディレクトリ移動とtest.exeを実行したいのではないですか?
telnetコマンドの標準入力に流し込めば動くかと思われますが…
# ただし、試したコトはありません。

バッチファイルではなく、CreateProcess()でプロセス起動して、標準入出力のパイプで操作する。
という方法もあります。
「CreateProcess パイプ」辺りで検索すると見つかるでしょう。

http://www.fpcu.jp/dosvcmd/bbs/log/cat1/4-0451.html
こんなネタもあります。

他の方法としては…希望する処理を記述したTeraTermマクロを作成して、system()でそのマクロを実行する。
とかですかね。
たぶんこっちの方が簡単でしょう。
お礼コメント
回答ありがとうございます。
telnetコマンドが終了するまで次の命令に移らないんですね。
勉強になりました。
アドバイスしてくださったのを試してみます。ありがとうございました
投稿日時 - 2010-12-28 14:18:29
  • 同意数0(0-0)
  • ありがとう数0
  • 回答数1
  • 気になる数0
  • ありがとう数1
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

関連するQ&A

その他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集

専門医・味村先生からのアドバイスは必見です!

関連するQ&A

-PR-

ピックアップ

  • easy daisy部屋探し・家選びのヒントがいっぱい!

-PR-
ページ先頭へ