Help us understand the problem. What is going on with this article?

WinSCPでファイルを取得する処理を自動化したい

More than 3 years have passed since last update.

WinSCPのGUIをつかって手動でファイルをダウンロードするのが、手間だと感じる時があれば、それは、WinSCPコマンドラインの出番です。

WinSCP-Logo.png

WinSCPにはWinSCP.comというコマンドラインのオプションがあります。
コマンドラインを使えれば、batファイルを作成して、タスクスケジューラーで定期実行させることもできますし、イベントトリガーで実行させることもできます。

以下、サンプルコードです。
いろいろなやり方がありますが、一例として、
接続先サーバからファイルをgetする処理を記載しています。

bat
@REM
@echo off

cls
echo START
echo.
echo cd /zzz/xxx > SCPcom.scp
echo lcd "C:\xxx/zzz" >> SCPcom.scp
echo bin >> SCPcom.scp
echo get vvv >> SCPcom.scp
echo close >> SCPcom.scp
echo exit >> SCPcom.scp

"C:\Program Files\WinSCP\WinSCP.com" /ini="C:\Program Files\WinSCP\WinSCP.ini" [WinSCPName] /console /script=.\SCPcom.scp

echo.
echo ScriptEnd
echo.
exit

処理の流れ

①ファイル(ここでは"SCPcom.scp"としています)に、実行したいコマンドを書き込みます。
②WinSCP.comを使用して、①で作ったファイルを読み込んで実行する。

流れは上記のように単純です。
変更箇所と注意点を見ていきましょう。

変更箇所

  • cd,lcd の箇所は、リモート先、ローカルのディレクトリを指定しましょう。
  • bin はバイナリモードの指定です。必要に応じて変更しましょう。
  • get でファイルをゲットしてきます。対象ファイル名を書きましょう。
  • close,exit で接続を終了します。
  • "C:\Program Files ではじまる次の行で、いよいよWinSCP実行です。WinSCP.comのファイル、iniファイルのパスを指定します。
  • [WinSCPName] には、WinSCPのGUIで設定した、接続先の設定名を記載しましょう。
  • script= は、コマンドをリダイレクトで書き込んだファイルを指定します。

注意点

  • 基本的にはbatファイルとして実行しますので、書き方はそれに準じる形でOKです。
  • コマンド用のファイルに書き込むので、リダイレクト( > もしくは >> )を使ってファイルへ書き込んでいきます。

他にも様々なコマンドラインがあります。
詳細はこのページなどを参照してください。

さいごに

WinSCPやFTPはファイル操作をするときに、非常に多く利用すると思いますが、
ある程度、固定的な内容であれば、自動化したほうが良いでしょう。

スクリプトを組む時間はかかりますが、その後は、ボタンひとつで、もしくは自動実行で作業できてしまうことでしょう!

umeee
プログラミングはエンタテイメントだ! 楽しむことがたいせつ。 興味のおもむくままにやる。 最近のメインジョブはプロジェクトマネージャ、ITコンサルタント系統です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした