• 締切済み

C#でファイル転送プログラムWinSCPのWinS

現在、C#でWinSCPに自動でログイン後、ファイルをアップロードしログアウトを定期的に行うプログラムを作成中なのですが、 ProcessでWinSCP.comを起動後、コマンドプロンプトのような画面にコマンドを打ち込むことが打ち込むことができず困っています。手動だとWinSCPを起動して、”open ホスト名”入力⇒サーバ接続⇒”ユーザー名”入力⇒”パスワード”入力⇒ログイン・・・・⇒ログアウトということができるのですが、参考にできるコードがネット上で見つけられません。起動時に引数を与える方法はたくさん載っているのですが、今回やりたい事と違っているのでどのようにコードを記述すればよいのかご教示ください。よろしくお願いいたします。

みんなの回答

回答No.2

C#のプログラムからスクリプトファイルを作って、 それをWinSCPに食わせたら?

参考URL:
http://winscp.net/eng/docs/scripting
sukapotan
質問者

お礼

バッチファイルやスクリプトファイルを使用する方法も最初考えたのですが、スクリプトファイルを作成した経験がない事とあまり良く知らないので命令文を順次投げていくというイメージしかなかったので、 この方法を却下していました。 コマンド入力のタイミングおよびサーバ接続・ログイン失敗等のエラー発生時の対処はスクリプトファイルで対応できるのでしょうか?

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

Windowsにおける画面(ウィンドウ)操作のアーキテクチャを ご存知ですか? テキストボックスも、ボタンも実はウィンドウです。 つまり、操作するにはウィンドウハンドルを取得しなければ なりません。そもそもWinSCPの親ウィンドウを見つけられ ますか?(FindWindowExまたはEnumWindows) 次にその子ウィンドウを列挙して、テキストボックスやボタンを 見つけるのですが、その方法を知っていますか? テキストボックスに文字列をセットする方法、ボタンにマウス クリックを通知する方法を知っていますか? これらが、全て分からないとプログラムできません。 しかも、正常動作せず、予期した画面に遷移しなかった時は どうやって異常を認識する予定ですか? むしろ、FTP、SFTP、SCPのプロトコルを自力で処理する プログラムを作る方が近道だと思いますよ。 先ずはソケット通信の方法を勉強します。これはこれで、 「通信」のアーキテクチャを覚えることになるので、自分の キャリアアップに繋がります。次にプロトコルを勉強することで やはりスキルアップに繋がります。 FTP等のプロトコルは大抵はクライアントからの要求送信、 サーバからの応答受信が繰り返されるだけです。 要求のコマンド+パラメータと応答コードの意味さえ分かれば さして難しいものではありません。但し、大量データの送受信 ではクライアント側にもサーバ側機能のような処理が必要で、 これはやや難しいところもあります。 いずれのプロトコルでもググれば何かしらのサンプルが見つ かるので、応用できるはずです。

sukapotan
質問者

お礼

ウィンドハンドルを取得して操作する方法は知っています。でもこの方法だとプログラムが動作している間、他の操作をすることができないのでこの方法でやろうとは考えていませんでした。 >むしろ、FTP、SFTP、SCPのプロトコルを自力で処理するプログラムを作る方が近道だと思いますよ。 こちらの方法でやりたかったのですが、時間がなく勉強する暇すらありません。 今回は既存のものを使って短時間でできないかと思い、質問いたしました。 他の掲示板でも似た内容の質問をされている方がおり、最終的に自分で解決しましたと書かれていたので 方法があるのだと思っていました。質問に答えていただきありがとうございました。

関連するQ&A

  • WinSCPの最初のログイン

    WinSCP ver3.7.6.306をダウンロードしました。 WinSCP Win→ルータ1→ネット→ルータ1→Linux OpenSSH とりあえずログインをやってみたいので、ホスト名、ポート22、ユーザ名、パスワードを入力してログインボタンを押しました。 横長の文字化けのウインドウが出て、しばらくすると Connection timed out.のエラーダイアログが出ました。 WinSCPの3種のプロトコルはどれもそうでした。 Linux側ではnetstatで tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN です。OpenSSHは起動しているようでした。 ルータのフォワード設定で22のTCPをLinuxに転送しています。 どうしたら接続できますか? 確認するべきところを教えてください。

  • Winscp

    winscpで、 IPアドレスを入力し、ユーザー名をroot、パスワードをalpineとしているにもかかわらず何故かwinspcにログインできません。 i pod touchで使用しようとしているのですが… パソコンはvista、使用しているワイヤレスはGW-54GXSです。 i pod touchにはopen sshをインストールしているのですが… パソコンにもインストールしなければならないのでしょうか? どうすればよいかをできるだけ詳しく教えていただけたら嬉しいです

  • C#で書かれたプログラムをバッチ処理

    C#で書かれたプログラムをバッチ処理を行いたいのですが,方法があまり良く分かりません. まずC#で書かれたプログラムを起動すると, 処理したいファイル名を入力するテキストボックススと, パラメータを入力するテキストボックスが表示されて, ボタンを押すと処理が始まります. 処理したいファイルが数百あるので,バッチ処理でできないものかと考えているのですが, どのようにC#のプログラムに引数を渡して処理させればいいのか分かりません. 理想としては,コマンドプロンプトから,各種値が入ったテキストファイルなんかを読み込ませて処理できればよいのですが... 十分伝えきれているのか不安ですが,宜しくお願い致します.

  • VB6 でSSH接続がしたい

    WinSCPを使って、SSH接続をし、ファイルをアップロードしたいのですが、 ログイン、およびアップロードができません。 【開発環境】 VB6.0 【コード】 Shell WinscpPath & " " & Servername, vbMaximizedFocus →これだと、WinSCPの起動とサーバーまでの接続しかできていないようです。 ユーザー名、ログインパスワード、コピー元、コピー先を指定する書き方が分かりません。 ■下記のURLのような方法であれば、実行はできました。 http://takuya-1st.hatenablog.jp/entry/20110903/1315052431 どうぞご教授よろしくお願いします。

  • tripodで転送の仕方がわからない

    tripodでアップロードの仕方がわかりません。FFFTPでアップロードしようと思ったのですが、指定先のURLは見つかりませんと出てしまいます。 もしかしたら入れる場所が違うのかもしれませんが、あまりそういうソフトを使わないのでそこが違うのか分かりません。 ホストの設定名は自由でユーザー名がサインアップしたときの名前(プロバイダからユーザー名、と送信されてきたもの)、パスワードも送信されてきたものなので間違いないと思います。 一番分からないのがホスト名(アドレス)となっている所なんですが、これにはどう入力すれば良いのでしょう? 説明ではftp.***.co.jpの***の所にユーザー名を入れています。 ローカル初期のフォルダは入力しないで下さいと書いてあったと思います。 ホスト初期のフォルダも未入力になっています。 それから高度の設定の所に移ってLISTコマンドでファイル一覧を取得、にチェックを入れました。 これもプロバイダの方で指示してあったと思います。 どこかおかしいですか? すみません、分かる方お願いします。

  • コマンドライン引数の区別【C言語】

    コマンドライン引数の区別【C言語】 コマンドラインから二つの引数(ファイル名)を渡すとき、順番が替わっても大丈夫なようにして、それぞれファイルオープンをしたいです。(エラーで”順番が違います”と出力するのはNGです) どうしたら区別できますか。分かる方いらっしゃいましたらご教授願います。 サンプルコードを書いていただけると幸いです。 宜しくお願いします。

  • サーバー自動ログインソフトを作りたい

    バッチもしくはVBスクリプトでサーバーに自動ログインする ソフトを作ろうとしているのですが、うまくいきません。 具体的な環境は以下のとおりです。 サーバー    IP:10.10.2.1   ログイン名:login   パスワード:pass 現在、コマンドプロンプトから手動で  C:\>telnet 10.10.2.1 でログインし、ログイン名とパスワードを聞いてくるので、手動で ログイン名:login パスワード:pass と入力しているのですが、この作業を自動化したいです。 バッチファイルでtelnetコマンドを実行し、その後VBスクリプトを起動し、ログイン名とパスワードを送ろうと思ったのですが、 telnetコマンドはサーバーと接続しただけでは次のコマンドに命令権を渡さないようで、VBスクリプトが起動しないです。 バッチとVBスクリプト以外でもいいので、上記の一連の作業を自動化する方法がわかるという方、ご教授願います。

  • いろいろ調べたのですがFFFTPのファイル転送ができません

    初心者で、まだホームページを作る練習段階です。FFFTPでindex.htmlファイルを転送しようとするとホストに接続した後で、 >425 Can't build data connection: Connection timed out >コマンドが受け付けられません. >ファイル一覧の取得を中止しました. >ファイル一覧の取得に失敗しました. と出てしまいます。今まで確かめたことは ・ホストのアドレス、ユーザ名、パスワード ・PASVモードを使う ・LISTコマンドでファイル一覧を取得 ・ホストの初期フォルダをpublic_htmlにする ですが他に間違っている可能性があれば教えてください。 よろしくお願いします。ちなみにプロバイダ、ホストはbiglobeです。 あとMS-DOSプロンプトだとpermission denidedとでます。

  • コマンドプロンプトでFTPでエラー

    FTPコマンドプロンプトについてお聞きしたいです。 フォルダの中に 01.bat、01.txt、index.htmlが入っています バッチの中身は ftp -s:ftp00.txt テキストの中身は open サーバー名 ユーザー名 パスワード asc put index.html disconnect bye これを実行したら以下の様になったのですが、なにが原因なのでしょうか? スクリプト ファイル ftp00.txt を開くときにエラーが発生しました。 それともう一つ質問があるのですが、 手動でFTP情報をコマンドプロンプトに入力していったら ホスト接続完了→ユーザー名完了→パス入力のところで なぜかキーボードが入力できなくなってしまいます。 なぜでしょうか? osはvistaです。

  • プログラム内でのワイルドカードファイル名展開

    javaプログラムのコマンドライン引数にパスの無いファイル名を指定し、プログラムの中でパス付きファイル名としています。 コマンドラインにワイルドカードの入ったファイル名が指定された場合、プログラムの中でファイル名展開する必要がありますが、そのようなコード、あるいはライブラリをお教え頂けませんでしょうか。 2011 Dec. 29.

    • ベストアンサー
    • Java

専門家に質問してみよう