-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
    Wr5

    >バッチファイルの内容は
    >(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
    -PR-
    -PR-
    • 回答数1
    • 気になる数0
    • ありがとう数1
    • ありがとう
    • なるほど、役に立ったなど
      感じた思いを「ありがとう」で
      伝えてください
    • 質問する
    • 知りたいこと、悩んでいることを
      投稿してみましょう
    こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
    このQ&Aにはまだコメントがありません。
    あなたの思ったこと、知っていることをここにコメントしてみましょう。

    関連するQ&A

    -PR-
    -PR-

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

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

    特集


    成功のポイントとは?M&Aで経営の不安を解決!

    -PR-

    ピックアップ

    -PR-
    ページ先頭へ